11

jQuery 検証プラグインの validate メソッドを使用してフォーム検証をセットアップし、input 要素の値を変更する送信ハンドラーを用意しました (YUI エディターを使用し、iframe のコンテンツを textarea 要素にコピーするには saveHTML() 呼び出しが必要です)。フォームを送信するときに、送信ハンドラーを実行した後にバリデーターがフォームを検証するようにします。ただし、検証呼び出しの後に登録されている場合、送信ハンドラーは実行されません。

例えば、

<form id="form1" action="/test">
    <input type="text" name="txt1" id="txt1" />
    <input type="submit" value="submit" />

$(document).ready(function() {
    $("#form1").submit(function() {
        $("#txt1").val("123456");
    });

    $("#form1").validate({
        rules: {
            txt1: {
                maxlength: 5
            }
        }
    });
});

送信ハンドラーの後にフォームが検証されるため、送信がキャンセルされます。

$(document).ready(function() {
    $("#form1").validate({
        rules: {
            txt1: {
                maxlength: 5
            }
        }
    });

    $("#form1").submit(function() {
        $("#txt1").val("123456");
    });
});

ただし、順序を変更すると、送信ハンドラーの前にフォームが検証されます。

4

5 に答える 5

8

コールバックを使用してbeforeSubmit値を設定できます。

$(function() {
    $('#form1').validate({
        rules: {
            txt1: { maxlength: 5 }
        },
        beforeSubmit: function(arr, $form, options) {
            $('#txt1').val('123456');
            return true;
        }
    });
});
于 2010-04-01T08:04:07.110 に答える
2

試す

$(document).ready(function() {
    $("#form1").submit(function() {
        $("#txt1").val("123456");

        $("#form1").validate({
            rules: {
                    txt1: {
                            maxlength: 5
                    }
            }
        });
    });
});

このようにして、検証は送信イベントハンドラーによってトリガーされます。

于 2009-08-02T11:24:52.520 に答える
0

これを簡単に使用できます:

var validForm = false;

SubmittingForm = function () 
{    
     //Validate Statements...
     validForm = true;
     $("#form1").submit();
}

$(document).ready(function () {
$("#form1").validate({
            submitHandler: function (form) {
                if (validForm)
                    $("#form1").submit();
                else
                    SubmittingForm();
            },
            rules: ...
}
于 2012-12-09T08:40:27.433 に答える
0

使用する必要があります$("form").validate().resetForm();

于 2012-08-03T17:24:55.130 に答える