0

我有一个 PHP 页面,它使用<form action="" method="post">. 我正在进行一些 jQuery 字段验证,如果验证未通过,我想阻止表单提交。但是,即使验证未通过,它也会继续提交。

我错过了什么?.submit()为了防止提交,我是否需要实际使用带有 jQ​​uery 函数的按钮(而不是提交) ?(这是一个小提琴

<form action="" method="POST">
    <label for="email">Username: <br />
    <input id="email" name="email" class="phPasswordTxtInputField" type="text" size="33" value=""><br />

    <label for="tmp_password">Temp password:<br />
    <input id="tmp_password" name="tmp_password" type="password"  minlength="5" value="" default="" size="33" caption=""><br />

    <label for="new_password">New password:<br />
    <input id="new_password" name="new_password" type="password"  minlength="5" value="" default="" size="33" caption=""><br />

    <label for="verify_password">Confirm password:<br />
    <input id="verify_password" name="verify_password" type="password"  minlength="5" value="" default="" size="33" caption=""><br />

    <div style="margin: 0px 0px 0px 160px;" id="lblConfirmPasswordMessage"></div>
    <input type="submit" id="submit_password" value="Reset Password" />
</form>

<script>
    function checkPasswordVerify(p,c,objId) {
        if(p != c) {
            var el =  $(objId);
            $(objId).html('<span class="passwordStrength">Please make sure the password and confirmation match.</span>');
            return false;
        }
        return true;
    }

    $('#submit_password').click(function() {
        checkPasswordVerify($(this).val(), $('#new_password').val(), '#lblConfirmPasswordMessage');
    });  
</script>
4

2 回答 2

3

您需要return在点击处理程序中声明:

$('#submit_password').click(function() {
    return checkPasswordVerify($(this).val(), $('#new_password').val(), '#lblConfirmPasswordMessage');
});

此外,最好在表单的submit处理程序中执行此操作,而不是提交按钮的click处理程序。无需单击提交按钮即可提交表单。

于 2013-10-25T20:33:43.673 回答
2

您实际上并没有对 .的返回值checkPasswordVerify任何事情。您可能想要更多类似的东西:

$('#submit_password').click(function() {
    return checkPasswordVerify($(this).val(), $('#new_password').val(), '#lblConfirmPasswordMessage');
});  

或者:

$('#submit_password').click(function(e) {
    if(!checkPasswordVerify($(this).val(), $('#new_password').val(), '#lblConfirmPasswordMessage'))
       e.preventDefault();
});  
于 2013-10-25T20:34:40.790 回答