在我提交表单之前,我想检查输入中的值。
我在这里检查一个值是否等于.5或1.或者不是空字符串。
form.onsubmit = function(e) {
var ftimes = document.getElementsByClassName("add_timebox");
var fflag = 0;
for(i=0;i< ftimes.length;i++) {
var value1 = ftimes[i].value;
console.log(value1);
if ( value1 !==.5 ||value1 !== 1 || (!IsStringEmpty(value1)) ){
fflag = 1;
console.log('inside');
}
}
if(fflag==1) {
alert('enter again' );
return false;
}
我对IF语句做了很多更改,试图让它正确。 但即使我知道不应该这样,它仍然在循环中。
例如,当我提交表单时,我有一个等于.22的输入值 然后它应该只给我1&#39;内部&#39;但不断重复:
内部 0.22 (空字符串) 内 ....
答案 0 :(得分:1)
您没有展示如何实现 IsStringEmpty 方法,但如果您使用的是这样的,那么任何数字也都是非空字符串,因此您的if语句将始终运行。
function IsStringEmpty(str) {
return (!str || 0 === str.length);
}
所以你需要用AND改变你的OR,否则它永远不会检查数字条件。
您可以检查该值是否为空字符串,并且与0.5和1不同。那么您的条件应该是这样的。
if (!IsStringEmpty(value1) && value1 !== 0.5 && value1 !== 1)
但是,您从表单中获取值,因此它将是一个字符串。因此,您正在比较字符串,您需要这个。
if (!IsStringEmpty(value1) && value1 !== ".5" && value1 !== "1")
虽然你可能想要比较浮点数,但在这种情况下你需要这个。
if (!IsStringEmpty(value1) && parseFloat(value1) !== .5 && parseFloat(value1) !== 1))
所以基本上,当你在所有表单字段中输入1,.5或空字符串时,跳过内部块。但是,如果您在任何字段中有任何其他值,那么该标志将设置为1.如果这不是您的意思,请更新您的问题以更具体。
请检查Plunker here。
希望这有帮助。
答案 1 :(得分:0)
你必须加一个休息时间;一旦满足if条件,就在if条件中声明。
if ( value1 !==.5 ||value1 !== 1 || (!IsStringEmpty(value1)) ){
fflag = 1;
console.log('inside');
break;
}