2015-11-22 169 views
-2

对于我的代码下面的JavaScript验证输入,但我无法阻止它从提交。我怎样才能阻止它。这是我的代码。表单验证失败,仍然在javascript中提交

<html> 

<head> 
    <script> 
     function validateForm() { 
      [].forEach.call(document.querySelectorAll('input[name^=name]'), function (el, p, l) { 
       if (el.name.indexOf('_var') > -1) { 
        if (el.value === "NA" && l[p - 1].value !== "NA") { 
         alert("Name_var must be filled out"); 
         return false; 
        } 
        return true; 
       } 
      }); 
     } 
    </script> 
</head> 

<body> 
    <form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> 
     Name: 
     <input type="text" name="name25"> Name1: 
     <input type="text" name="name25_var"> 
     <input type="submit" value="Submit"> 
    </form> 
</body> 

</html> 
+1

请重新格式化你的代码正确缩进。 – csmckelvey

+0

我看到它正确缩进。 – sauravrout

+1

因为@loxxy为你做了。 – csmckelvey

回答

0

试图保持你的代码,我会尝试声明一个变量只提交如果不存在任何错误的形式,这样的事情:

function validateForm() { 
    var existError = false; 

    [].forEach.call(document.querySelectorAll('input[name^=name]'), function (el, p, l) { 
     if (el.name.indexOf('_var') > -1) { 
      if (el.value === "NA" && l[p - 1].value !== "NA") { 
       alert("Name_var must be filled out"); 
       existError = true; 
       return false; 
      } 
      return true; 
     } 

     return existError; 
    }); 
} 

的问题是你的一句“回归的forEach“只是从返回‘’不过的forEach是一个函数,永不停止,直到循环的所有元素,如果你想停在你找到和错误的时刻,那么你应该使用every

function validateForm() { 
     return [].every.call(document.querySelectorAll('input[name^=name]'), function(el, p, l) { 
      if(el.name.indexOf('var') > 1 && el.value === "NA" && l[p - 1].value !== "NA") { 
       alert('Name_var must be filled out'); 
       return false; 
      } 

      return true; 
     }); 
    } 

泛函例如:

function validateForm() { 
 
     return [].every.call(document.querySelectorAll('input[name^=name]'), function(el, p, l) { 
 
      if(el.name.indexOf('var') > 1 && el.value === "NA" && l[p - 1].value !== "NA") { 
 
       alert('Name_var must be filled out'); 
 
       return false; 
 
      } 
 

 
      return true; 
 
     }); 
 
    }
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> 
 
     Name: 
 
     <input type="text" name="name25"> Name1: 
 
     <input type="text" name="name25_var"> 
 
     <input type="submit" value="Submit"> 
 
    </form>

+0

我试着上面的代码..仍然无法工作 – sauravrout

+0

我有一个名称= ^的类型错误,应该是名称^ = ....请再试一次,现在它为我工作。 –

+0

我在name1中填入'saurav'并在名称1中填入'NA'并提交。它给了我警觉但仍然提交。你能发送你正在使用的完整代码吗? – sauravrout