6

1 ~ 4 の値を持つドロップダウン セレクターがあります。選択に応じて、フォーム内の後続の入力が非表示になり、必要な検証がそれぞれから削除されます。たとえば、2 を選択すると、入力 1 ~ 2 が表示され、必要な検証が追加されますが、3 ~ 4 は非表示になり、検証が削除されます。

$("#dropdownSelector").change(function() {
inputtohide = $(this).val();
$('input[id*=conviction]').slice(0, inputtohide).show().rules("add", {required: "#convictions_0:checked" });
$('input[id*=conviction]').slice(inputtohide, 4).hide().rules("remove", {required: "#convictions_0:checked" });
$("#thisform").validate();
});

これは問題なく動作しますが、(検証プラグインのドキュメントに記載されているように) 検証は、返された最初の要素に対してのみ追加されます。

他の投稿から、次のコードが各入力に検証を追加する必要があることを理解しています:-

$("#thisform").validate();
$("input[id*=conviction]").each(function() {
    $(this).rules("add", {required: "#convictions_0:checked" });

    });

私の質問は、2 つのコードをどのように組み合わせるかです。どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

5

返されるすべての要素を反復処理するには.each()、結果に対して関数を使用するだけです。.slice()

$('input[id*=conviction]').slice(0, inputtohide).each(function(){
    $(this).show().rules("add", {required: "#convictions_0:checked" });
});

$('input[id*=conviction]').slice(inputtohide, 4).each(function(){
    $(this).hide().rules("remove", {required: "#convictions_0:checked" });
});

お役に立てれば !

于 2012-06-13T21:40:20.773 に答える