Frage

Ich versuche, einen anderen jQuery-Funktion aufrufen, wenn bestätigen wahr ist, hier ist der 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;
        };

    }

});

^^ der obige Code nicht funktioniert, aber Sie werden sehen, was ich versuche zu tun ..

War es hilfreich?

Lösung

Sie müssen den Standard-Aktion auf dem Formular des Browsers verhindern, die sie an den Server die traditionelle Art und Weise zu unterwerfen ist. Entweder return false am Ende Ihres Handler einreichen oder e.preventDefault() am Anfang gesagt:

jQuery("#adminForm_1").submit(function (e) {
    e.preventDefault();
    ...

oder:

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

Siehe preventDefault :

  

Verhindert, dass der Browser die Ausführung von   die Standardaktion. Verwenden Sie das Verfahren   isDefaultPrevented zu wissen, ob   Diese Methode wurde immer (auf dem genannten   Ereignisobjekt).

Wie als Randnotiz return false hat die gleiche Wirkung wie preventDefault plus es stoppt das Sprudeln des Ereignisses übergeordnete Elemente. jQuery-Mechanismus für das zu erreichen, ist in der stopPropagation Methode. Mit anderen Worten, return false = e.preventDefault + e.stopPropagation

Andere Tipps

Sie sind nicht die „normal“ Stoppen einreichen Ereignis ausbreitet - versuchen return false nach dem .validationEnginge() Verfahren Zugabe (alternativ es aus dem if Block bewegt):

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

oder auch

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;
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top