0

を使用してそれ自体に送信する PHP ページがあります<form action="" method="post">。私はいくつかの jQuery フィールド検証を行っており、検証に合格しなかった場合にフォームが送信されないようにしたいと考えています。ただし、検証に合格しなくても送信は続行されます。

私は何が欠けていますか?.submit()送信を防ぐために、jQuery 関数で (送信ではなく) ボタンを実際に使用する必要がありますか? (ここにフィドルがあります)

<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 に答える