在提交表单之前,我想检查输入中的值。
在这里,我正在检查一个值是否等于.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个“内部”,但在不断重复:
内.22(空字符串)内....
您没有显示如何实现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或空字符串时,您将跳过inside块。但是,如果在任何字段中都有其他值,那么该标志将设置为1。如果这不是您的意思,请更新您的问题以更具体。
请在此处检查Plunker 。
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句