我有两个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
的条件。
答案 0 :(得分:0)
似乎jQuery没有通过达到return false
来切断事件链。预期的解决方案应该是:
function eventHandler(e) {
//...
e.stopImmediatePropagation();
return false;
//...
}
在stopImmediatePropagation
之前添加return false
电话,以便保持一致。
(另一个风滚草在这里?)