Aufruf eines anderen jQuery-Funktion, wenn bestätigen wahr ist
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 ..
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;
});