質問

現在、検証プラグインを使用してフォームを検証しています(ASP.Netコントロールを使用)。 form.validateメソッド内の標準セットアップからルールを削除しました:

    $("form").validate({

    rules: {
        ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0: "required"
    }

});

どのボタンがクリックされたかに応じてルールを追加するさまざまな機能にこれらがあります。これはテキストボックスでは正常に機能しますが、RadiobuttonListでは、プラグインがルールを追加しようとすると、要素が未定義であるというエラーが表示されます。

function addRuleSet() {
    $("#ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0").rules("add", { required: true });

}

問題は、name属性を使用して(aspが$を入れる)idではなくラジオボタンが属するグループを定義していることだと思います(ただし、静的設定では、すべての要素がnameを使用して定義されますとにかく、関連するラジオボタンのグループにルールを追加する方法を理解していないので、アドバイスをいただければ幸いです。

PS個々のラジオボタンではなく、RadioButtonListを呼び出す必要があります。

役に立ちましたか?

解決

要素にクラスを設定してルールを適用することもできます。たとえば、クラスに" required"と指定した場合、入力に必要なルールがその要素に適用されます。これを行うには、コントロールのCssClassプロパティを使用します。クラスがコンテナではなく、生成された入力要素に適用されていることを確認するために、RadioButtonListなどの複合コントロールを試す必要がある場合があります。これに問題がある場合、それを行う1つの方法は、セレクターに基づいてページがロードされた後にjQueryを使用してクラスを追加することです。

<asp:RadioButtonList id="RadList" runat="server" CssClass="required">
   ...
</asp:RadioButtonList>

または

<script type="text/javascript">
     $(function() {
          $(':radio').addClass('required');
          $('form').validate();
     });
</script>

複雑なクラスベースのルールの場合、 addClassRules を使用して新しいルールを追加できます。

<script type="text/javascript">
    $(function() {
        $.validator.addClassRules({
             range0to10: {
                  range: [0, 10]
             },
             name: {
                  minlength: 2,
                  required: true
             }
        });
        $('form').validate();
    });
</script>

<form ... >
<input type="text" name="rating" id="rating" class="range0to10" />
<input type="text" name="firstName" id="firstName" class="name" />
<input type="text" name="lastName" id="lastName" class="name" />
</form>

他のヒント

この数日間、私を怒らせて、質問をすると、要素を適切に戻す方法を考えるようになりました。

$("input:radio[name='ctl00$ContentPlaceHolder1$dgQuestions$ctl14$iRadList_Col0']").rules("add", { required: true });
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top