【问题标题】:Calling another jQuery function if confirm is true如果确认为真,则调用另一个 jQuery 函数
【发布时间】:2009-09-24 05:21:19
【问题描述】:

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

    }

});

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

【问题讨论】:

  • 运行时会发生什么?
  • 它刷新页面并且不调用 .validationEngine scipt .. 不过 FF 中没有错误..
  • 没有 javascript 错误.. :)

标签: jquery forms confirm


【解决方案1】:

您需要防止浏览器对表单的默认操作,即以传统方式将其提交给服务器。 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 falsepreventDefault 具有相同的效果,而且它会停止将事件冒泡到父元素。 jQuery 实现这一点的机制在stopPropagation 方法中。换句话说,return false = e.preventDefault + e.stopPropagation

【讨论】:

    【解决方案2】:

    您并没有阻止“正常”提交事件的传播 - 尝试在 .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;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 2020-04-27
      相关资源
      最近更新 更多