好吧,我一直在寻找如何用周期检查所有对象的属性(for)并且找不到很多。
我一直在使用JS和jquery进行注册表单验证,我为每个字段添加了一个带有属性(false
或true
)的对象,只是为了知道某个字段是不是填写正确。我想检查所有寻找false
的属性,如果有,请禁用该按钮。我试着读这样的对象:
for(var p in flags){ // flags = object
if(p == false){
flagStatus = false;
}
}
if(flagStatus )
$("#subReg").attr("disabled", false);
else
$("#subReg").attr("disabled", true);
我不确定我错过了什么。任何帮助都会很棒,ty。
编辑:
var flags = {nick: false, pass:false, passVer:false, genero:false, pais:false, fechaNac:false, nombre:false, apellido:false, email:false, checkBox:false, captcha:false};
答案 0 :(得分:1)
您需要获取/比较值,而不是键。试试这个:
var flags = {key1: true, key2: false, key3: true};
var flagStatus = true;
for (var p in flags){
if (flags[p] === false) {
flagStatus = false;
break;
}
}
if (flagStatus)
$("#subReg").attr("disabled", false);
else
$("#subReg").attr("disabled", true);
循环时,p
引用对象中的键,而flags[p]
引用值。
在上面的示例中,遇到的第一个p
是“key1”,flags[p]
是true
。接下来,p
为“key2”,flags[p]
为false
- 因此if
语句通过,flagStatus
设置为false
,循环停止。
此外,您可以将结尾处(循环之后)的代码组合为:
$("#subReg").attr("disabled", !flagStatus);
所以你不需要if / else:)