2010-11-18 229 views
0

這實在讓我感到困擾。如果函數返回false,我只想讓表單不提交。這是腳本。Javascript表單驗證

function checkPass(){ 
          var pass1 = document.getElementById('pass'); 
          var pass2 = document.getElementById('pass2'); 
          var message = document.getElementById('confirmMessage'); 
          var goodColor = "#224466"; 
          var badColor = "#900000"; 
          if(pass1.value == pass2.value){ 
          pass2.style.backgroundColor = goodColor; 


          return true; 
          }else{ 
          pass2.style.backgroundColor = badColor; 


          return false; 
          } 
         } 

形式仍然透過當我使用:

<form onsumbit="checkPass();"> 
</form> 

,當我的用戶

<form> 
<input type="submit" onclick="checkPass();"> 
</form> 

和沒有運氣。有任何想法嗎?

+0

你如何將該事件處理程序附加到表單中? – Gareth 2010-11-18 22:08:28

+0

你的代碼有點混亂。你能澄清你正在嘗試使用的表單嗎?您的onsubmit函數中是否使用checkPass? – wajiw 2010-11-18 22:10:10

回答

3

使用此對的onsubmit事件您形式的:

onsubmit="return checkPass()" 

或者這一個你提交按鈕(輸入標籤):

onclick="return checkForm()" 
2

如果你是使用xhtml確保'onsubmit'是小寫字母。

<form onsubmit="return checkPass()" ... > 
1

由於M2X說,你需要使用

<form onsubmit="return checkPass();"> 

的是,當你將一個事件處理程序的屬性,它的方式,究竟內部發生的事情是所創建的原因了新的匿名函數包裝在屬性中的代碼中,並且該函數需要返回將阻止或允許表單提交的值。

所以你原來onsubmit屬性會變成:

function() { 
    checkPass(); 
} 

執行該checkPass功能,但丟棄它的返回值。通過在屬性中的return,它會變成:

function() { 
    return checkPass(); 
} 

這將返回值返回給它由checkPass功能,由此實現期望的效果。