return false在javascript验证中不起作用

时间:2013-03-04 04:52:30

标签: 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;
    }
}

并输入:

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

3 个答案:

答案 0 :(得分:3)

要使return方法起作用,您需要为onSubmit标记本身指定form属性/侦听器。像这样:

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

来自w3c文档:

  

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


修改

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;
    }
}

答案 1 :(得分:1)

将验证移至表单。

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

答案 2 :(得分:0)

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

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

</form>