返回false没有在JavaScript验证

问题描述:

function confirmValidation() { 
    var confirmPass = document.getElementById('newpassword').value; 
    var newpass = document.getElementById('newpassword2').value; 
    var passLength = confirmPass.length; 
    if ((confirmPass == newpass) && (confirmPass != "" && newpass != "") && (passLength > 8)) { 
     alert("ok"); 
     return true; 
    } else { 
     alert("no"); 
     confirmPass.focus(); 
     return false; 
    } 
} 

和输入工作:返回false没有在JavaScript验证

<input name="register" type="submit" class="alert_button" onclick="return confirmValidation()" value="OK" /> 
+0

请显示您的HTML代码? – Roopendra 2013-03-04 04:57:56

+0

你在哪里打电话给你的其他控件JS – polin 2013-03-04 04:58:13

+0

为什么大多数问题都是在后期被低估的! – 2013-03-04 04:59:22

将您的验证的形式。

document.getElementById('my_form').addEventListener('submit', confirmValidation, false); 

对于return方法工作,你需要指定onSubmit属性/监听器form标签本身。像这样:

<form method="post" onsubmit="return confirmValidation();"> 
    <!-- OTHER form fields --> 
</form> 

w3c文件:

当表单提交时发生onsubmit事件。它只适用于FORM元素。


EDIT

jsfiddle link加入。

您必须稍微改变您的JavaScript,以便.focus()可能会触发。

function confirmValidation() { 
    var confirmPass = document.getElementById('newpassword'); 
    var newpass = document.getElementById('newpassword2'); 
    var passLength = confirmPass.value.length; 
    if ((confirmPass.value == newpass.value) && (confirmPass.value != "" && newpass.value != "") && (passLength > 8)) { 
     alert("ok"); 
     return true; 
    } else { 
     alert("no"); 
     confirmPass.focus(); 
     return false; 
    } 
} 
+0

\t \t
\t
新密码
\t
\t
over 8 characters
\t
确认
\t
\t
\t
\t \t
\t
\t
user2122323 2013-03-04 05:20:44
+0

@ user2122323编辑答复。请检查。 – hjpotter92 2013-03-04 05:32:23

您应该在标签中使用onsubmit()事件。现在,当您提交表单时,它将调用写在onsubmit()事件上的函数。只有在Onsubmit()的情况下,它会检查返回值是否为真,然后进一步否则不会。

<form method="post" onsubmit="return confirmValidation();"> 

</form>