Appeler un autre fonction jQuery confirmer si est vrai
Question
Je suis en train d'appeler une autre fonction jQuery confirmer si est vrai, voici le code:
jQuery("#adminForm_1").submit(function () {
var empty = false;
jQuery(":input", "#adminForm_1").each(function () {
empty = (jQuery(this).val() == "") ? true : empty;
});
if (empty) {
if (confirm('You have not filled out all of the fields, do you wish to continue?')) {
jQuery("#adminForm_1").validationEngine({
ajaxSubmit: true,
ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save",
ajaxSubmitMessage: "Client Trip Details Saved",
inlineValidation: false,
success: false,
failure: function () {}
});
} else {
return false;
};
}
});
^^ le code ci-dessus ne fonctionne pas, mais vous verrez ce que je suis en train de le faire ..
La solution
Vous devez empêcher l'action par défaut du navigateur sur le formulaire, ce qui est de le soumettre au serveur de la manière traditionnelle. Soit return false
à la fin de votre gestionnaire soumettre, ou mettre e.preventDefault()
au début:
jQuery("#adminForm_1").submit(function (e) {
e.preventDefault();
...
ou
jQuery("#adminForm_1").submit(function () {
var empty = false;
jQuery(":input", "#adminForm_1").each(function () {
empty = (jQuery(this).val() == "") ? true : empty;
});
if (empty) {
if (confirm('You have not filled out all of the fields, do you wish to continue?')) {
...
});
}
}
return false;
});
Voir preventDefault
:
Evite le navigateur d'exécuter l'action par défaut. Utilisez la méthode isDefaultPrevented savoir si cette méthode n'a jamais été appelé (ce objet de l'événement).
comme return false
côté note a le même effet que preventDefault
plus il arrête le barbotage de l'événement à des éléments parents. le mécanisme de jQuery pour la réalisation qui se trouve dans la méthode stopPropagation . En d'autres termes, return false
= e.preventDefault + e.stopPropagation
Autres conseils
Vous n'êtes pas arrêter l'événement « normal » de se propager soumettre - essayez d'ajouter return false
après la méthode de .validationEnginge()
(alternativement le déplacer hors du bloc de if
):
jQuery("#adminForm_1").submit(function () {
var empty = false;
jQuery(":input", "#adminForm_1").each(function () {
empty = (jQuery(this).val() == "") ? true : empty;
});
if (empty) {
if (confirm('You have not filled out all of the fields, do you wish to continue?')) {
jQuery("#adminForm_1").validationEngine({
ajaxSubmit: true,
ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save",
ajaxSubmitMessage: "Client Trip Details Saved",
inlineValidation: false,
success: false,
failure: function () {}
});
}
return false;
}
});
Ou même
jQuery("#adminForm_1").submit(function () {
var empty = false;
jQuery(":input", "#adminForm_1").each(function () {
empty = (jQuery(this).val() == "") ? true : empty;
});
if (empty) {
if (confirm( ... )) {
jQuery("#adminForm_1").validationEngine({ ... });
}
}
return false;
});