我想调用另一个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知道是否   这种方法被称为有史以来(上   事件对象)。

由于作为边注return false具有如preventDefault同样的效果,再加上它停止事件的冒泡到父元素。 jQuery的机制实现是在 stopPropagation 方法。换句话说,return false = e.preventDefault + e.stopPropagation

其他提示

你不停止“正常”从传播提交事件 - 尝试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;
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top