0

内部にいくつかの div ブロックを含む単一のフォームがあります。すべての div にはフィールドとボタンがあります。ボタンをクリックすると、その div(ボタンの親) だけを検証し、いくつかのフィールドをサーバーに非同期的に送信する必要があります。すべてが正常に機能しますが、検証は機能しません。JQuery 検証プラグインを使用しています。私が見るように、私はそのようなコードを書くことができません:

<script type="text/javascript">
//.......
     // Validator for general information
        var userProfileGeneralValidator = $("#form1").validate({
            onkeyup: false,
            onclick: false,
            onfocusout: false,
            rules: {
                txtPrivateNumber: {
                    required: true
                }
            },
            messages: {
                txtPrivateNumber: {
                    required: "Required!"
                }
            },
            errorPlacement: function (error, element) {
                if (error.text() != "") {

                }
            },
            success: function (lbl) {

            }
        });

       // Validator for password information
        var userPasswordValidator = $("#form1").validate({
            onkeyup: false,
            onclick: false,
            onfocusout: false,
            rules: {
                txtOldPass: {
                    required: true,
                    minlength: 5
                }
            },
            messages: {
                txtOldPass: {
                    required: "Required!"
                }

            },
            errorPlacement: function (error, element) {
                if (error.text() != "") {
                }
            },
            success: function (lbl) {

            }
        });
</script>

userPasswordValidator.form()そして、あるボタンクリックと他のボタンクリックで呼び出しuserProfileGeneralValidator.form()ます。私の目標を達成するためのトリックはありますか: jqueryで個別に検証するいくつかのフォームパーツ?
PS: 1 つの解決策が見つかりました: メイン フォームに複数のフォームを配置します。divごとに1つ。しかし、それは汚いと思います。
ソリューションを使用して更新します。最後に、この質問から回答を取得しましたが、次の変更を加えました。document.ready のどこかでフォーム全体
のメソッドを呼び出します。validate()検証オプションとして、検証する必要があるすべてのコントロールのルールを追加します (それらはdivsグループとしてネストされています)。Messages/errorPositions/Success ファイルで宣言します。ここで、検証するコントロールがネストされている div のボタンをクリックして作業します。そして、そのdivだけを検証するには、次を使用します:

var validator = $("#topUserProfile").validate(userProfileGeneralValidator);
// Validate and save general information
if (!validator.form()) {

    return;
}

#topUserProfileコントロールを含む div の名前はどこにありますか。userProfileGeneralValidator検証用の追加オプション (メッセージ/位置/など) を保持する変数です。助けてくれた皆さん、ありがとう。

4

2 に答える 2

3

この要件のために私が使用したのは、複数の要素を jquery 検証プラグインのvalid()メソッドに渡すことです。たとえば、これのいくつかのバリエーションです。

$('#testdiv :input').valid()

$('#testdiv').valid() を呼び出すだけでは機能しませんが、:input セレクターを使用すると、jquery でラップされたセット内のすべてのフォーム要素が有効かどうかがわかります。

于 2012-12-11T17:27:06.257 に答える