2010-11-18 8 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; 
          } 
         } 

私が使用している場合、フォームはまだsumbit:

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

とするとき、私のユーザー

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

と運を。何か案は?

+0

どのようにイベントハンドラをフォームにアタッチしていますか? – Gareth

+0

あなたのコードはちょっと混乱します。あなたが作業しようとしているフォームを明確にすることはできますか?あなたのonsubmit関数でこのcheckPassですか? – wajiw

答えて

3

あなたフォームをonSubmitイベントの使用これを:

onsubmit="return checkPass()" 

またはあなたのボタン(inputタグ)提出のため、この1:あなたがいる場合

onclick="return checkForm()" 
2

をxhtmlを使って 'onsubmit'が小文字であることを確認してください。 M2Xが言うように

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

は、あなたがその理由は、あなたが属性としてそのようにイベントハンドラを割り当てるときに、どのような実際に内部で起こることであることを新たに匿名関数が作成されていること

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

を使用する必要があります属性内のコードを囲み、その関数はフォームの送信を妨げたり許可したりする値を返す必要があります。 checkPass機能を実行しますが、その戻り値を破棄

function() { 
    checkPass(); 
} 

だからあなたの元onsubmit属性が変換されます。所望の効果を達成する、checkPass関数によってそれに返された値が返された

function() { 
    return checkPass(); 
} 

:属性にreturnを含むことにより、変換されます。

関連する問題