2011-09-16 24 views
0
<script type="text/javascript"> 
var geid = function(x) { 
     var element = document.getElementById(x); 
     return element; 
    }   


function submitForm(){ 
var password = geid('password').value; 
var passwordConfirm = geid('passwordConfirm'); 

//THIS IS OF HIGH IMPORTANCE THAT THIS CONFIRM PASSWORD MATCHES 
//WILL NEED TO VALIDATE IT IN THE PHP AS WELL> 
else if (password == ""){ 
    registerMessage.innerHTML = "Please enter your Password."; 
    return false; 
} 
else if (passwordConfirm == "") { 
    registerMessage.innerHTML = "Please confirm your password.";    
    return false; 
} 

else if (passwordConfirm != password) { 
    registerMessage.innerHTML = "Your passwords don't match.";   
    return false; 
} 
else { 
    registerMessage.innerHTML = "Taking you to your profile, please wait a moment..."; 
    document.forms['registerform'].submit(); 
} 
} 

    <form method="post" action="register.php" id="registerform" onsubmit="return submitForm()"> 


    <label for="password" class="registerLabel">Password</label> 
    <input type="password" name="password" id="password" class="registerText" /> <br /> 

    <label for="passwordConfirm" class="registerLabel">Confirm Password</label> 
    <input type="password" name="passwordConfirm" id="passwordConfirm" class="registerText" /> <br /> 


     <div class="submitMessage"> 
      <input type="submit" id="submit" name="submit" value="Register" class="registerButton cleangray" /><br /> 
      <div id="registerMessage"><?php echo $error ?></div> 
     </div> 

     <div class="clear"></div> 

    </form> 
+1

これを良い質問にするには、フォームを提出しないと考える理由を説明する必要があります。 **コードダンプは質問ではありません** –

答えて

4

else ifで始めることはできません。あなたが実行しているとちょうど標準提出するメカニズムを使用してフォームを送信からあなた検証コードのいずれかを防止することだif

if (password == ""){ 
    registerMessage.innerHTML = "Please enter your Password."; 
    return false; 
} 

で開始する必要があります。

これは、検証にアプローチする最善の方法でもありません。それぞれのエラーに戻るのではなく、一連のメッセージをまとめて、すべてを一度に報告することができます。そうすれば、ユーザは間違ったことをすべて知っているでしょう。—あなたの現在のメソッドは1つのメッセージしか設定しません。

+0

具体的に言えば、この解析エラーは関数の実行を妨げ、 'return false'が呼び出されません。しかし、この仕組みはJavascriptに結合されていないため、依然としてフォーム提出が進められます。 –

+0

@Tomalak Geret'kal:あなたはそのコメントを書いていたので、私の答えを更新していました:) – Town

+0

Meh @ iterative answering! –

2

JavaScriptでエラーが発生したため、else ifを使用しています(ifは最初に定義されていません)。このエラーのため、すべてのJavaScriptコードが失敗します。あなたのコードをHTMLにところでデモhttp://jsfiddle.net/Zs3km/

作業

if (password == ""){ 

変更

else if (password == ""){ 

はちょうどここにそのあなたのミスであれば必ず、<script>タグ内にありません。 <form>タグを開く前に、<script>タグを閉じる必要があります。

関連する問題