重新键入密码验证无效

时间:2010-01-04 08:21:46

标签: javascript

我使用了以下代码:

<script type="text/javascript">
function validate() {
    if ((document.changepass.newpassword.value != '') &&
(document.changepass.retypenewpassword.value ==
document.changepass.newpassword.value)){
            document.changepass.retypenewpassword.blur();
            document.changepass.submit();

    }
}
</script>

<form name="changepass" method="POST" action="changepassword.jsp" onsubmit="return validate();">

<table align="center">
    <tr>
        <td>New Password:</td>
        <td><input type="password" name="newpassword" size="20"
            style="width: 145px" maxlength="10"></td>
    </tr>
    <tr>
        <td>Retype New Password:</td>
        <td><input type="password" name="retypenewpassword" size="20"
            style="width: 144px" maxlength="10"></td>
    </tr>
    <tr>
        <td><input type="submit" value="Change Password" name="operation" ></td>
        <td><input type="reset"></td>
    </tr>
    </table>
</form>

但是当我提供无与伦比的条目时,它也会被更改。我的意思是验证函数没有被调用。 请帮忙

希望 循环

2 个答案:

答案 0 :(得分:3)

您的表单无论如何都会提交,因为您在错误时没有从验证函数返回false。它应该是:

function validate() {
    var d = document.changepass;
    if((d.newpassword.value != '') && (d.retypenewpassword.value == d.newpassword.value)) {
        return true;
    }
    return false;
}

目前,您没有为validate()指定返回值,并且它被解释为始终返回true,因此表单将被提交。您不需要从函数中调用submit(),只要一切正常就返回true。

答案 1 :(得分:2)

onsubmit上的<form>处理程序正在查找返回值,但未从validate函数中获取返回值。您应该返回true或false,而不是在函数中调用submit(),具体取决于表单是否有效(如果函数返回false,相当于onsubmit="false",这将取消提交):

function validate()
{
  if ((document.changepass.newpassword.value != '') && (document.changepass.retypenewpassword.value != document.changepass.newpassword.value))
  {
    // A password is given but it doesn't match
    // Perhaps you want to alert() an error message here to tell the user why the form doesn't validate?
    return false;
  }

  return true;
}