Chamar outra função jQuery se confirmar é verdade
Pergunta
Eu estou tentando chamar uma outra função jQuery se confirmar é verdade, aqui está o código:
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;
};
}
});
^^ o código acima não trabalho, mas você vai ver o que eu estou tentando fazer ..
Solução
Você precisa impedir a ação padrão do navegador no formulário, que é submetê-lo ao servidor da maneira tradicional. Ou return false
no final do seu enviar manipulador, ou colocar e.preventDefault()
no início:
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;
});
Impede que o navegador seja executado a ação padrão. Use o método isDefaultPrevented saber se este método já foi chamado (em que objeto de evento).
Como a nota lateral return false
tem o mesmo efeito que preventDefault
mais ele pára o borbulhar do evento para elementos pai. mecanismo de jQuery para alcançar o que há no stopPropagation método. Em outras palavras, return false
= e.preventDefault + e.stopPropagation
Outras dicas
Você não está parando o "normal" enviar evento de propagação - tente adicionar return false
após o método .validationEnginge()
(alternativamente movê-lo para fora do bloco 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 mesmo
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;
});