Chiamare un'altra funzione jQuery se confermare è vero
Domanda
Sto cercando di chiamare un'altra funzione jQuery se confermare è vero, ecco il codice:
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;
};
}
});
^^ il codice di cui sopra non funziona, ma vedrete quello che sto cercando di fare ..
Soluzione
È necessario prevenire l'azione di default del browser sul modulo, che è quello di presentare al server in modo tradizionale. O return false
alla fine del vostro gestore presentare, o mettere e.preventDefault()
all'inizio:
jQuery("#adminForm_1").submit(function (e) {
e.preventDefault();
...
o
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;
});
impedisce al browser di esecuzione l'azione predefinita. Utilizzare il metodo isDefaultPrevented sapere se questo metodo è stato mai chiamato (in quel oggetto evento).
Per quanto come side-nota return false
ha lo stesso effetto di preventDefault
più si ferma il gorgogliare della manifestazione di elementi padre. Meccanismo di jQuery per realizzare che è nel stopPropagation metodo. In altre parole, return false
= e.preventDefault + e.stopPropagation
Altri suggerimenti
Non sei fermare il "normale" presentare evento dalla moltiplicazione - provare ad aggiungere return false
dopo il metodo .validationEnginge()
(in alternativa si muove fuori del blocco 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;
}
});
O anche
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;
});