2015-11-22 144 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