Javascript jQuery函数不会返回true
我有一个小的验证脚本,它工作得很好。脚本的末尾表示如果成功,它应该返回Javascript jQuery函数不会返回true,javascript,jquery,Javascript,Jquery,我有一个小的验证脚本,它工作得很好。脚本的末尾表示如果成功,它应该返回true。我已经测试了脚本,它正在达到这一点,但它没有返回true 我已经使用控制台.log进行了测试,它可以很好地访问else语句,但是当我查看调用它的位置时,它不会返回true 它应该将validate的结果分配给变量valid——但这似乎总是未定义的 $(".btnCalc").click(function() { var id = this.id; var valid = validate(id);
true
。我已经测试了脚本,它正在达到这一点,但它没有返回true
我已经使用控制台.log进行了测试,它可以很好地访问else
语句,但是当我查看调用它的位置时,它不会返回true
它应该将validate
的结果分配给变量valid
——但这似乎总是未定义的
$(".btnCalc").click(function() {
var id = this.id;
var valid = validate(id);
console.log(valid); // this always shows as undefined, even if the validation scrip was successful
if (valid == true){
console.log("validated!");
}
});
实际上,您应该执行一个更全局的变量,因为jQuery本身是一个函数,所以它本身有一个返回值:
function validate(id){
var div = $("." + id + "-calc");
// set up a default return value
var success = true;
$(div).find("input[type = 'text']").each(function() {
if(this.value == ""){
$(this).addClass("errorInput");
// instead of returning, set the value here
success = false;
} else {
$(this).removeClass("errorInput");
}
});
// return the value. Now your function will return the state of the value at that point.
return success;
}
undefined
定义是正确的,因为包装函数不会向调用方返回任何内容
更新
我反转了@bux(和@Francesca)建议的函数您的匿名函数返回truevalidate()
不返回任何内容。return语句位于错误的函数中。我猜只有在所有字段都有效的情况下,它才会返回true。所以我认为success
应该默认为true
,并在if的第一部分设置为false
。@bux是的,这可能是真的。我并没有真正追求实际的功能,而是追求返回值的概念。修改总是可能的:)这非常有效。我也加入了@bux的调整。谢谢你解释我的错误所在。@something这里你撤销了success-var声明,但是你仍然需要将success=false移到第一个if部分:)该死,我再次没有查看上下文,但是功能-\ux-将进一步撤销它。谢谢@Francesca
function validate(id){
var div = $("." + id + "-calc");
// set up a default return value
var success = true;
$(div).find("input[type = 'text']").each(function() {
if(this.value == ""){
$(this).addClass("errorInput");
// instead of returning, set the value here
success = false;
} else {
$(this).removeClass("errorInput");
}
});
// return the value. Now your function will return the state of the value at that point.
return success;
}