Forme de piège Jquery submit ()
Je suis actuellement à l'aide de jquery pour piège de la soumission d'un formulaire et d'indiquer aux utilisateurs une boîte de dialogue de confirmation. Si l'utilisateur clique sur oui, puis forme devrait se soumettre. Si l'utilisateur clique sur non, puis fermez la boîte de dialogue.
Tout cela fonctionne bien, mais pour une question: lorsque l'utilisateur clique sur oui, cela déclenche alors de nouveau le même code, et le dialogue est ré-ouvert.
$("#myform").submit(function (event) {
if (something) {
var $dialog = $('<div></div>').dialog({
buttons: {
"OK": function () {
$dialog.dialog('close');
$("#myform").submit();
return;
},
Cancel: function () {
$(this).dialog("close");
}
}
});
$dialog.dialog('open');
event.preventDefault();
return false;
} else {
$("#myform").submit();
}
});
Je comprends pourquoi ce qui se passe, tout simplement pas sûr de la meilleure façon de les contourner. Je me rends compte que je pourrais montrer le modal sur clic du bouton, au lieu de soumettre le formulaire, mais cela ne marche pas à contourner le problème de l'utilisateur de frapper le bouton enter sur le clavier pour envoyer le formulaire.
source d'informationauteur JonoB
Vous devez vous connecter pour publier un commentaire.
Parce que quand vous
submit
la forme, lasubmit
événement déclenche à nouveau et si le gestionnaire d'événement. Vous devezunbind
lasubmit
gestionnaire d'événement lorsque l'utilisateur ditOK
. Essayez cetteVous devez retourner false lorsque
OK
:Ou supprimer le manuel de soumettre:
Intstead de l'utilisation de l'objet jQuery pour soumettre le formulaire, vous pouvez utiliser l'élément du DOM que l'objet jQuery se réfère pour soumettre le formulaire. Cela contourne le jQuery, le gestionnaire d'événement. Votre OK fonction devrait ressembler à ceci:
Je voudrais faire
something
soit un espace de noms global, ou une valeur de certains secrets d'entrée comme suit:Votre logique devrait fonctionner normalement ensuite.