Prévenir ASP.net __doPostback() de jQuery submit() dans UpdatePanel
Je suis en train d'arrêter la publication sur le formulaire de soumission si mon custom jQuery validation renvoie false.
Est-il de toute façon à prévenir l' __doPostback() en fonction de la finition de l'intérieur de la soumettre() la fonction?
J'avais supposé:
$('#aspnetForm').submit(function () { return false; });
ferait l'affaire, mais apparemment ce n'est pas le cas: quelqu'un aurait-il une suggestion?
Le submit() la fonction ne bloque la publication (il ne sera pas de publication si vous faites une pause à un point d'arrêt dans firebug), mais je n'arrive pas à mettre fin à l'événement qui se passe après le submit() la fonction est terminée!
Acclamations, Ed
MODIFIER
OK, j'ai eu une petite déconner et a découvert que le fait que le bouton que j'utilise pour provoquer la publication est liée à un updatepanel comme un asyncpostbacktrigger semble être le problème: Si je le supprime comme un déclencheur (c'est à dire provoquer produit une publication complète), n'est pas un problème empêchant la publication avec return false;
Des idées pourquoi l'async publication ne serait pas arrêter à l'aide de return false?
OriginalL'auteur Ed James | 2010-03-11
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser le côté client
PageRequestManager
de traiter correctement AJAX soumettre des événements. (par exemple empêcher un async publication.)Si vous n'êtes pas en contrôle total de la page, il peut y avoir JavaScript sur la page qui appelle simplement
__doPostBack()
sans passer par une page logique.Dans ce cas, en plus de ce qui précède, vous avez à stocker l'ancienne
window.__doPostBack()
et de fournir votre propre - comme @tucaz mentionné dans son commentaire.(...et comme vous l'avez mentionné, il peut être assez déroutant avec chaînage.)
Régulièrement soumet (non-AJAX), vous pouvez fournir un gestionnaire d'événement, comme d'autres l'ont souligné.
Cette page peut-être de l'aide et a des exemples de code qui utilisent
PageRequestManager
. En particulier:Modifier:
À la suite de la ci-dessus, c'est, par exemple fonctionne très bien pour moi (.Net 3.5 SP1,
Button1
est le déclencheur dans l'updatepanel, etc...):Bécasse des bois: En regardant le source et article trouvé par exemple sur msdn.microsoft.com/en-us/magazine/cc163380.aspx, abortPostBack() est pour l'annulation d'une demande qui a été déjà commencé.
OriginalL'auteur Andras Vass
Cela devrait le faire!
Oui, mais alors j'aurais besoin de l'attacher à chaque bouton sur la forme, ce qui n'est pas très sensible. J'ai besoin d'être en mesure de le faire avec submit() (ou l'équivalent) pour que je puisse utiliser le contrôle qui utilise le code sans avoir à le configurer sur une page.
Si ce n'est pas un problème pour vous, vous pouvez l'ajouter à chaque bouton $('input[type=button]") ou quelque chose comme ça, ou essayez le .preventDefault() comme suggéré par jQuery documentation ici api.jquery.com/submit
Une autre idée serait d'obtenir une référence ne l'original __doPostBack de la fonction et de la remplacer par un mannequin fonction si vous voulez interrompre la publication. Quelque chose comme ceci: var __oldPostBack = __doPostBack; __doPostBack = function() { //vérifier si vous pouvez poster, puis appelez __oldPostBack() }
ouais, vrai avec le sélecteur, mais dans ASP.net tout peut causer une publication, telle que dropdownlist selectedindexchanged (nous en sommes à l'aide de beaucoup), j'aimerais donc à lier les différents événements en fonction du type d'entrée, ce qui est un peu trop complexe. Comme pour preventDefault(), le retour des faux appels automatiquement de toute façon, comme vous pouvez le voir si vous entrez par un retour avec firebug.
OriginalL'auteur tucaz