2013-10-22 27 views
0

我正在使用JavaScript驗證進行註冊表單。窗體onsmitmit javascript無效

<form name="registration" method="post" onsubmit="return validate_registration()"> 
<input id="username" type="text" name="username" value="<?php echo @$_POST['username'];?>" onblur="checkUsername(this.value)"> 
<span id="e_username" style="display: none; color: #c00;"><?php echo _("Some error");?></span> 
<input type="submit" name="register_frm_smbt" value="<?php echo _("Submit");?>"> 
</form> 

的Javascript:

<script type="text/javascript"> 
    function checkUsername(login){ 
    reg = /^[\w]{1}+[\w\.\d-_]{1,}$/i; 
    if (login.length < 3 || !login.match(reg)) { 
     document.getElementById("e_username").style.display = "inline"; 
     return false; 
    } 
    else { 
     document.getElementById("e_username").style.display = "none"; 
     return true; 
    } 
    } 

function validate_registration(){ 
     var username = document.getElementById("username").value; 
     alert(username); // works 
     if (checkUsername(username)){ 
       alert("OK!"); //never 
       return true; 
       } 
     else { 
      alert("NOT OK!"); //never 
      return false; 
     } 
    } 
</script> 

所以checkUsername(login)工作正常 「的onblur」,同時填寫表格。但validate_registration()沒有。使用用戶名創建第一條警報,但都不是「OK!」或「不行!」正在警覺。這是爲什麼?

+0

作爲一個文體的意見,當你從一個'if'語句返回,使用'其他「是無關的。只要刪除它,代碼將變得更清晰。 –

回答

0

使用onsubmit,你不會取消事件,所以表單被提交併且頁面被重新加載。

要防止的形式被髮送到服務器,獲取傳遞給回調的事件,然後防止像這樣的默認操作:event.preventDefault()

+0

'return validate_registration()'確實應該阻止表單提交。 – Ryan