如果确认为真,我正在尝试调用另一个jQuery函数,这是代码:
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;
};
}
});
^^上面的代码不起作用,但你会看到我正在尝试做什么..
答案 0 :(得分:3)
您需要阻止浏览器对表单的默认操作,即以传统方式将其提交给服务器。提交处理程序末尾的return false
或开头的e.preventDefault()
:
jQuery("#adminForm_1").submit(function (e) {
e.preventDefault();
...
或:
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
:
阻止浏览器执行 默认操作。使用该方法 isDefaultPrevented知道是否 这种方法曾被称为(就此而已 事件对象)。
由于旁注return false
与preventDefault
具有相同的效果,它会阻止事件冒泡到父元素。 jQuery的实现机制在stopPropagation方法中。换句话说,return false
= e.preventDefault + e.stopPropagation
答案 1 :(得分:1)
您没有停止传播“正常”提交事件 - 尝试在return false
方法之后添加.validationEnginge()
(或者将其移出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;
}
});
甚至
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;
});