Llamando a otra función jQuery si es cierto confirmar
Pregunta
Estoy tratando de recuperar otras funciones jQuery si confirman es cierto, aquí está el 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;
};
}
});
^^ el código anterior no funciona, pero se podrán ver lo que estoy tratando de hacer ..
Solución
Es necesario para evitar la acción por defecto del navegador en la forma, que es a lo presentará al servidor de la manera tradicional. De cualquier return false
al final de su manejador de presentar, o poner e.preventDefault()
al principio:
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;
});
evita que el navegador ejecutar la acción predeterminada. Utilice el método isDefaultPrevented saber si este método fue llamado alguna vez (en ese objeto de evento).
Como como nota lateral return false
tiene el mismo efecto que preventDefault
además de que se detiene el burbujeo del evento para elementos primarios. mecanismo de jQuery para lograr que se encuentra en la stopPropagation método. En otras palabras, return false
= e.preventDefault + e.stopPropagation
Otros consejos
No vamos a parar el "normal" enviar evento se propaguen - trate de añadir return false
después del método .validationEnginge()
(alternativamente se mueve hacia fuera del bloque 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 incluso
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;
});