1

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

    }

});

^^ 上面的代码不起作用,但你会看到我想要做什么..

4

2 回答 2

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具有与 plus 相同的效果,preventDefault它停止将事件冒泡到父元素。jQuery 实现这一点的机制在stopPropagation方法中。换句话说,return false=e.preventDefault + e.stopPropagation

于 2009-09-24T05:35:47.810 回答
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;
});
于 2009-09-24T05:36:37.017 回答