我正在使用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 :(得分:0)
使用onsubmit,您不会取消该事件,因此表单将被提交并重新加载页面。
要阻止将表单发送到服务器,请捕获传递给回调的事件,然后阻止默认操作:event.preventDefault()