表单onsubmit javascript无法正常工作

时间:2013-10-22 18:32:28

标签: javascript onsubmit

我正在使用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!”或者“不行!”警惕。那是为什么?

1 个答案:

答案 0 :(得分:0)

使用onsubmit,您不会取消该事件,因此表单将被提交并重新加载页面。

要阻止将表单发送到服务器,请捕获传递给回调的事件,然后阻止默认操作:event.preventDefault()