1

クライアントで次の html を生成する Web ユーザー コントロールがあります。

JavaScript を使用して特定の RadioButton コントロールを参照したいと考えています。

RadioButton ID は asp.net によって生成されるため、これを行う方法がわかりません。

たとえば、RadioButton ID = を指定します。1_RadioButton

asp.net は ID を生成します =ctl00_ContentPlaceHolder1_Material_1_RadioButton

この JavaScript コードはどのようにラジオ ボタン コントロールを見つけることができますか?

    <script type="text/javascript">
        $(document).ready(function() {
            if (document.getElementById("1_RadioButton").checked) {
                $("#1_other").hide();
            }
        });    
    </script>

以下は、asp.net がクライアント用に生成するものです。

    <input id="ctl00_ContentPlaceHolder1_Material_1_RadioButton" type="radio" name="ctl00$ContentPlaceHolder1$Material$Academic" value="1_RadioButton" onclick="javascript:$('#1_other').show('fast');" />

    <label for="ctl00_ContentPlaceHolder1_Material_1_RadioButton">Yes</label>

    <input id="ctl00_ContentPlaceHolder1_Material_2_RadioButton" type="radio" name="ctl00$ContentPlaceHolder1$Material$Academic" value="2_RadioButton" checked="checked" onclick="javascript:$('#1_other').hide('fast');" />

    <label for="ctl00_ContentPlaceHolder1_Material_2_RadioButton">No</label>

    <input id="ctl00_ContentPlaceHolder1_Material_3_RadioButton" type="radio" name="ctl00$ContentPlaceHolder1$Material$Academic" value="3_RadioButton" onclick="javascript:$('#1_other').hide('fast');" />

    <label for="ctl00_ContentPlaceHolder1_Material_3_RadioButton">Uncertain</label>

    <div id='1_other'>
         <input name="ctl00$ContentPlaceHolder1$Material$4_TextBox" type="text" value="bbb chabng" id="ctl00_ContentPlaceHolder1_Material_4_TextBox" />
   </div>
4

4 に答える 4

6

そのコードが .aspx ファイルにある場合は、代わりに <%= MyRadioButton.ClientID %> を使用すると、ASP.NET レンダリング エンジンが ID を適切にレンダリングします。

更新:例:

<script type="text/javascript">
    $(document).ready(function() {
        if ($get("<%= MyRadioButton.ClientID %>").checked) {
            $("#1_other").hide();
        }
    });    
</script>
于 2009-05-07T17:58:54.837 に答える
1
var radioButton = document.getElementById("<%= 1_RadioButton.ClientID %>");

そして、そこから行きます。注 - 引用符については肯定的ではありません。

于 2009-05-07T17:59:24.507 に答える
-1

これを行う方法についてのブログ投稿を書きました:

たとえば、ページにラベル コントロールがあるとします。

生成された html の出力とそのコントロールの ID は、次のようになります。

<span id="ctl00_ContentPlaceHolder1_Label1"></span>

残念ながら、ct100_ContentPlaceHolder1_Label1 の生成された ID は、ビルドごとに常に同じになるとは限りません。したがって、次のように選択しようとしています。

$("#ct100_ContentPlaceHolder1_Label1").hide();

最終的に壊れて、ラベル コントロールが非表示になりません。

秘訣は、jQuery セレクター内で ASP.NET を使用することです。Label1.ClientID は、生成された ID を毎回返します。次のように、ASP.NET と jQuery を 1 行に結合します。

$("#<%= Label1.ClientID %>").hide();

これにより、Label コントロールの生成された ID が毎回取得されます。

于 2009-05-07T18:08:24.203 に答える