使用onblur进行表单验证

时间:2013-07-29 14:04:54

标签: forms validation

这是我的表格。

<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();

1 个答案:

答案 0 :(得分:1)

未在主密码更改时触发密码验证 - 在更改密码2或单击提交时将其触发。 :)

如果您坚持要检查更新密码和密码2的时间,我只需添加一项检查以查看密码2是否留空:

else if(password !== password2 && password2 !== ""){

但是对提交进行的所有检查都是一个更清晰的解决方案(正如Rake所说,如果更新的跨度而不是警报,那么它仍然更整洁。)