如果确认为true,则调用另一个jQuery函数

如果确认为true,我正在尝试调用另一个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; }; } }); 

^^上面的代码不起作用,但你会看到我正在尝试做什么..

您需要阻止浏览器对表单的默认操作,即以传统方式将其提交给服务器。 要么在提交处理程序的末尾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来了解是否曾调用此方法(在该事件对象上)。

由于side-note return falsepreventDefault具有相同的效果,它会阻止事件冒泡到父元素。 jQuery的实现机制在stopPropagation方法中。 换句话说, return false = e.preventDefault + e.stopPropagation

你没有停止传播的“正常”提交事件 – 尝试在.validationEnginge()方法之后添加return false (或者将它移出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; });