这是我的表格。
<form method="post" name="frm" >
<label>Name*<input type="text" name="Name" value="<?php echo $r['Name'] ?>" onblur="if(this.value.length<3) alert('Name too short');" /></label>
<label>Username*<input type="text" name="UN" value="<?php echo $r['UN'] ?>" onblur="if(this.value.length<5) alert('Username too short');" /></label>
<label>Password*<input type="password" name="PW" onblur="validation()" /></label>
<label>Confirm Password*<input type="password" name="CM" onblur="validation()" /></label>
<?php } ?>
<input type="submit" name="Submit" value="<?php if($new) echo 'Register'; else echo 'Update'; ?>" />
</form>
如果没有编写单独的onblur事件,我试图将所有这些事件都放入一个名为validation()的函数中,就像我为Password做的那样并确认密码字段。这是我的验证函数。
<script language="javascript">
function validation(){
var password= document.frm.PW.value;
var password2=document.frm.CM.value;
if (password.length<5){
alert ("Password too short");
}
else if(password!=password2){
alert("password mismatch");
}
}
</script>
但是这个代码一旦我填写了密码,当我即将开始输入确认密码字段时,它会提醒消息(“密码不匹配”)。如何摆脱这个。并且对于所有表单标记,如果我正在验证并使用validation()函数,那么在每个标记中我是否必须调用onblur = validation();
答案 0 :(得分:1)
未在主密码更改时触发密码验证 - 在更改密码2或单击提交时将其触发。 :)
如果您坚持要检查更新密码和密码2的时间,我只需添加一项检查以查看密码2是否留空:
else if(password !== password2 && password2 !== ""){
但是对提交进行的所有检查都是一个更清晰的解决方案(正如Rake所说,如果更新的跨度而不是警报,那么它仍然更整洁。)