jQuery(1.8) - 取消剩余的事件链

时间:2014-05-13 17:13:18

标签: javascript jquery

我有两个submit处理程序,按以下顺序添加:

首先在页面的特定代码中添加这个:

function validateOnSubmit() {
    //sacar el rojo de textfield de producto
    console.log("pre-submit");
    if (currentRestrictions == null) {
        //debe seleccionar un producto
        $("#invalidProductDialog").dialog("open");
        return false;
    } else if (!currentRestrictions.allows($("#largo").val(), $("#ancho").val(), $("#calibre").val())) {
        //hay un error de validacion
        $("#invalidDimensionsDialog").dialog("open");
        return false;
    }
}

稍后会在页面布局中添加这个(我使用的是Yii Framework,虽然它与问题无关):

$("form:not(.allow-double-post)").submit(function () {
      console.log("check double post...");
      if($(this).data("alreadyInput")){
            return false;
      } else {
            $(this).data("alreadyInput", true);
            // regular checks and submit the form here
            return true;
      }
});

我测试了它们是否按顺序运行(考虑那里的两条消息日志指令),它们按正确的顺序运行(即首先是validateOnSubmit,稍后是DoublePost检查程序)。

但是我希望validateOnSubmit中的return false切断事件链(即运行validateOnSubmit并且在返回false之后不运行双重检查器),但在return false之后(validateOnSubmit函数中的两个原因中的任何一个)运行双帖检查器处理程序。我认为在jquery 1.8中有一个return false会削减事件链。

:当两种情况之一发生时,如何切断事件链?即当前在return false上执行validateOnSubmit的条件。

1 个答案:

答案 0 :(得分:0)

似乎jQuery没有通过达到return false来切断事件链。预期的解决方案应该是:

function eventHandler(e) {
    //...
    e.stopImmediatePropagation();
    return false;
    //...
}

stopImmediatePropagation 之前添加return false电话,以便保持一致。

(另一个风滚草在这里?)