我使用了以下代码:
<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>
但是当我提供无与伦比的条目时,它也会被更改。我的意思是验证函数没有被调用。 请帮忙
希望 循环
答案 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;
}