0

1つは「はい」、もう1つは「いいえ」の2つのラジオボタンがあり、テキストボックスがあります。それらはすべてasp.netコントロールです。「はい」ラジオボタンがチェックされている場合はテキストボックスに値を要求し、「いいえ」ラジオボタンがチェックされている場合は値を要求しないようにしています。jQuery ルールとメッセージを使用してこれを行う必要があります。次のコントロールでこれを行う方法を知っている人はいますか?

<asp:RadioButton runat="server" ID="rbYes" GroupName="radioGroup" Text="Yes"/>
<asp:RadioButton runat="server" ID="rbNo" GroupName="radioGroup" Text="No"/>
<asp:TextBox runat="server" ID="txtBox"/>
4

2 に答える 2

0

ClientID.NET コントロールのプロパティを見てみましょう。たとえば、「はい」ラジオボタンがチェックされているかどうかを判断するには、次を使用します

var yesIsChecked = $('#<%=rbYes.ClientID%>').is(':checked');

同様に、テキストボックスが空かどうかをテストするには、次を使用します

var txtBoxIsEmpty = $('#<%=txtBox.ClientID%>').val() == "";

これをカスタムバリデーターなどと組み合わせて使用​​して、目的を達成できます。カスタム バリデータの詳細については、こちらをご覧ください。下部に向かって、記事はClientValidationFunctionプロパティについて言及しています。これには、検証ロジックを実行する関数の名前が含まれている必要があります。MSDNリファレンスはこちら

于 2012-11-28T23:30:40.003 に答える
0

どうもありがとう、

これが私の質問を解決した方法です:

  1. テキスト ボックスを無効または有効にするために、次のコードの$(document).ready()一部を jQuery スクリプト ブロックに挿入します。

    if($('#<%= rbNo.ClientID  %>').is(':checked')) {
        txtBox.attr('disabled', true);
    } else {
        txtBox.removeAttr('disabled');
    }
    
  2. jQuery 検証にルールを追加するには ($(document).ready()コード ブロックでも):

    var rules = {
        txtBox: {
            required: true,
            messages: {required: "Required field when Yes is checked"}
        }
    };
    
    $('#<%= rbNo.ClientID  %>').click(function (e) {
        if (this.checked) {
            txtBox.attr('disabled', true);
            addOrRemoveRules(rules, "remove");
        }
        else {
            txtBox.removeAttr('disabled');
            addOrRemoveRules(rules, "add");
        }
    });
    
  3. $(document).ready()コード ブロックの外で、コード ブロック内にjavascript、ルールとメッセージを追加または削除するために必要な関数を含める必要があります。

    function addOrRemoveRules(rulesObj, operation){
    if (operation == "add") {
            for (var item in rulesObj){
                $('#'+item).rules('add',rulesObj[item]);  
            }
        }
        else{
            for (var item in rulesObj){
               $('#'+item).rules('remove');
            }
        }           
    }
    
于 2012-12-14T21:03:34.430 に答える