3

検証プラグインを使用するフォームがありますが、わずかに異なる基準を使用してフォームの別の部分を検証する必要があります。ほとんどのフィールドはエラーを次のテーブルセルに配置しますが、1つのフィールドではエラーを別の場所に配置する必要があります。 。

これは、メインフォームフィールドの検証機能です。

jQuery("#form2").validate({
    rules: {
        street: {
            required: true,
            minlength: 5
        },
        city: {
            required: true,
            minlength: 3
        },
        state: {
            required: true
        },
        zip: {
            required: true,
            minlength: 5
        }
    },
    messages: {
        street: {
            required: "Please enter your address",
            minlength: "Address is too short"
        },
        city: {
            required: "Please enter your town/city",
            minlength: "Town/City is too short"
        },
        state: {
            required: "Please enter your county"
        },
        zip: { 
            required: "Please enter your postcode",
            minlength: "Postcode is too short"
        }
    },
    errorPlacement: function(error, element) {
            error.appendTo(element.parent("td").next("td"));
    }
}); // end validate

基本的に、このフィールドセットを個別に検証したいので、errorPlacementに別の値を使用できます。

    jQuery("#elecfields").validate({
    rules: {
        sup1: {
            minlength: 2
        }
    },
    messages: {
        sup1: {
            minlength: "must be 2 digits"
        }
    },
    errorPlacement: function(error, element)
    {
        // different error placement is needed here
    }

}); // end elecfields validate

elecfieldsはform2内のフィールドセットですが、これは機能していないようです。

errorPlacementはフォーム内のすべてのフィールドに適用する必要があるようですが、エラーが必要な1つのフィールドが別の場所に配置されています。これをどのように達成できるかについてのアイデアはありますか?どんな助けでも大歓迎です。

4

2 に答える 2

3

あなたが正しい。errorPlacement ハンドラーはフォーム全体に適用されますが、特定の状況で別の方法でエラーを処理するロジックをそこに含めることもできます。たとえば、要素のプロパティ direclty を調べて問題の項目を監視したり、共通の親 (この場合はフィールドセット) に基づいてそれらをフィルター処理したりできます。例:

$("#form").validate({
    /* */
    errorPlacement: function(error, element)
    {
        if( element.closest("#subFieldSet").length ) {
            /* special handling */
        } else {
            /* generic handling */
            error.insertAfter(element);
        }
    }
});
于 2010-01-18T14:19:02.523 に答える
0

セクションごとに複数のフォームを使用するのはどうですか?

そうすれば、さまざまなフォームにさまざまなルールを設定でき、errorPlacement オプションをいじることはありません。

于 2011-02-01T16:58:55.377 に答える