我在click()之后运行这个循环,如果return false
放在迭代器的更深处,它就不会return false
。我怎样才能确保它返回false; ?
$.each($(".payment"), function(key, value) {
the_date = $(value).children("input:first").val();
if( the_date != "") {
if( the_date.split("/").length != 3) {
return false; // <--- This doesn't work
};
};
};
这是另一个有效的验证器
if( $("input#date_awarded").val().split("/")[2] > 2010 ) {
return false; // <-- Totally works
};
答案 0 :(得分:3)
在.each()
中,从每个回调中返回return false
,并停止循环。
相反,您可以使用变量来保存返回值,并在循环之后返回该值。
var returnValue = true; //use a variable for the return value
$.each($(".payment"), function (key, value) {
the_date = $(value).children("input:first").val();
if (the_date != "") {
if (the_date.split("/").length != 3) {
returnValue = false; // set the return value
return false; // break the loop
}
}
});
return returnValue; // return the return value
答案 1 :(得分:1)
使用@patrickdw代码示例修复您的错误,然后清理您的代码。
var returnValue = true;
$.each($(".payment>input:first-child"), function (key, value) {
if (this.value.split("/").length !== 3) {
return (returnValue = false);
}
});
return returnValue;
或仅仅是为了踢,让我们在一行for循环中重做它而不需要一个体块。
for (var returnVal = true, var i = 0, var inputs = $(".payment>input:first-child"), var text = $(inputs[i]).val(); i < inputs.length && ((text.split("/").length !== 3 && (returnVal = false)) || true); text = $(inputs[++i]).val());
return returnVal;
我不建议你折磨维护者并编写如上所述真的滥用循环的代码。
答案 2 :(得分:0)
return false适用于'each'回调。你想将它应用于'click'回调吗?如果是这样的话就这样做:
jQuery(selector).click(function() {
var returnValue = true;
jQuery(anotherSelector).each(function() {
do_stuff();
returnValue = false;
}
return returnValue;
}