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 ..

¿Fue útil?

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;
});

preventDefault :

  

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;
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top