2011-09-16 136 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; 
} 

這是防止任何的驗證代碼運行,只是使用標準的提交機制提交表單。

這也不是驗證的最佳方式。而不是在每個錯誤返回,你可以建立一串消息,並一次性返回。這樣用戶知道一切都是錯誤的—你目前的方法只會設置一條消息。

+0

更具體地說,這個分​​析錯誤阻止了函數的運行,所以不會引發'return false';然而,表單提交仍然繼續,因爲這種機制沒有耦合到Javascript。 –

+0

@Tomalak Geret'kal:我正在更新我的答案,因爲你正在寫評論:) – Town

+0

梅@迭代回答! –

2

由於您在JavaScript中有錯誤,因此您首先使用else if而未定義if。由於這個錯誤,所有的JavaScript代碼都會失敗。

變化

else if (password == ""){ 

if (password == ""){ 

在你的代碼的HTML工作演示http://jsfiddle.net/Zs3km/

BTW是<script>標籤內,不知道如果你的錯誤就在這裏。在<form>標記打開之前,您必須關閉<script>標記。