2016-08-03 66 views
-1

我在Javascript中編寫了一個驗證函數來檢查我的密碼是否匹配。Javascript表單驗證onsubmit不工作

HTML

<form action="/anotherPage" onsubmit="return validate()" method="POST"> 
    <input type="password" name="password"/> 
    <input type="password" name="password2"/> 

    <button type="submit" class="btn btn-primary">submit</button> 
</form> 

的Javascript

<script> 
    function validate() { 
     var ok = true; 
     var password = document.getElementById("password").value; 
     var password2 = document.getElementById("password2").value; 
     if (password != password2) { 
      alert("Passwords Do not match"); 
      document.getElementById("password").style.borderColor = "#E34234"; 
      document.getElementById("password2").style.borderColor = "#E34234"; 
      ok = false; 
     } 
     else { 
      alert("Passwords Match!!!"); 
     } 
     return ok; 
    } 
</script> 

在控制檯,它說的形式提交,但我想驗證形式submitted.But永遠達不到我的驗證功能之前。我該如何解決?

+0

控制檯中的錯誤? – mplungjan

+0

在控制檯中它表示提交表單,但我想在表單提交之前進行驗證。驗證功能從未達到。 –

+0

在你的html中你寫了''並且在你的js'document.getElementById(「password」)'中。您應該爲兩個密碼元素添加id屬性。 –

回答

2

您正在使用getElementById - 但您沒有具有此類ID的輸入字段。將id="password"id="password2"添加到輸入字段 - 魔術會發生。

+0

將接受這個答案 –

0

您需要使用event.preventDefault防止默認表單提交

function validate(event) { 
event.preventDefault(); 
     //Rest of code 
     return ok; 
    } 

JSFIDDLE

+0

這真的很有趣,很好知道將來 –

0

你錯過來定義你輸入的ID:

<form action="/anotherPage" onsubmit="return validate()" method="POST"> 
    <input type="password" id="password" name="password"/> 
    <input type="password" id="password2" name="password2"/> 

    <button type="submit" class="btn btn-primary">submit</button> 
</form> 
-1

你可以做到這一點使用jQuery但首先你必須給你的input一個id

<input type="password" id="password" name="password"/> 
<input type="password" id="password2" name="password2"/> 
// then the jQuery 
pass = $('#password').val(); 
pass2 = $('#password2').val(); 
if(pass == pass2){ 
    alert('good'); 
} else { 
    alert('bad'); 
} 
+0

'pass = $('[name =「password」]')'''pass2 = $('[name =「password2」]')'會工作,但OP沒有分配'id's –

+0

我已經更新了我的答案 –