在提交表单之前检查值

时间:2014-10-21 22:01:46

标签: javascript

在我提交表单之前,我想检查输入中的值。

我在这里检查一个值是否等于.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 (空字符串) 内 ....

2 个答案:

答案 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;

        }