5

jQueryを使用して、関連するラジオボタンもチェックする要素をクリックできるようにしたい。runat = "server"をラジオボタンに追加する必要があるまで、これは正常に機能していました。

これを適用すると、jQuery関数が機能しなくなり、それを回避する方法がわかりません。コードの簡略化されたバージョンを次に示します。

HTML

<input type="radio" runat="server" id="sector1Radio" name="SectorGroup" title="Sector1" />

jQuery

$('#SomethingElse').click(function() {
    $('input[title=Sector1]').attr('checked','checked');
});

check = "checked"ではなく.netコントロールに変換すると(通常のように)チェックされるだけなので、変更しましたが、複数のブラウザーでDOMを検査すると、ラジオはありませんでした。ボタンがチェックされています:-(

jQueryを使用してrunat="server"のあるラジオボタンをチェックする他の方法はありますか?

乾杯!

4

8 に答える 8

2

あなたの問題は、入力のIDがsector1Radioではなく、ctl00_sector1Radioなどであるということだと思います。これは、入力コントロールがContentPlaceHolderコントロールなどの内部にある場合に発生します(マスターページを使用する場合)。

生成されたHTMLコードを(ブラウザーで)チェックして、これが当てはまるかどうかを確認できますか?入力コントロールのIDは何ですか?

この場合、jsjQueryコードを生成する必要があります

$('#SomethingElse').click(function() {
  $('input[title=Sector1]').attr('checked','checked');
});

SomeThingElseがコントロールのClientIDに置き換えられるように、コードビハインドから。

于 2010-08-31T06:59:51.273 に答える
1

.is(':checked')は、ASP.NETのラジオボタンとチェックボックスで機能します

$('#SomethingElse').click(function() {
    $('input[title=Sector1]').is(':checked');
});
于 2010-08-30T14:38:37.860 に答える
0

使ってみてください

$('input[title=Sector1]').attr('checked',true);

$('input[title=Sector1]').attr('checked',false);

または多分

$('#SomethingElse').click(function () {
    $('input[title=Sector1]').attr('checked',!$('input[title=Sector1]').attr('checked'));
});
于 2010-08-31T13:14:09.817 に答える
0

私も同じ問題を抱えていました。jQuery UIを使用してradiobuttons素敵なものを作成するには、次のように記述する必要があります。

<div id="radio">
<input type="radio" id="radio1" runat="server" />
<label for="radio1">The label of the radio button</label>
...
</div>

<script type="text/javascript">
$('#radio').buttonset();
</script>

入力タグのIDは、ラベルのfor属性によって正しく参照されている必要があります。Webページがマスターページ内にある場合、入力タグのIDはのようなものに変更されctl00_Something_radio1、突然、ラベルのfor属性が入力タグを参照しなくなります。ASP.NETではこれに注意してください!

于 2010-08-30T13:44:24.147 に答える
0

他の人が示唆しているように、ASP.netは指定したIDと同じHTMLを生成しません。

クイックソリューション:

  • IDを使い続けることはできますが、代わりにjqueryにIDの終わりを確認するように依頼します。例:

    $( "input [id $ ='sector1Radio']")。is( ":checked");

  • または、ニコが提案したタイトルと名前と照合します

  • ASP.netの影響を受けないクラス要素を使用します。例

    <input type = "radio" runat = "server" id = "sector1Radio" class = "sector1Radio" name = "SectorGroup" title = "Sector1" />

    $( "input.sector1Radio")。is( ":checked");

生成されたHTMLコードを表示して、どのIDが提供されているかを確認すると、適切なjqueryセレクターを使用できます。生成されたIDは、マスターページを使用するかどうかなどによって異なる拡張子を持つ可能性があるためです。

于 2010-08-31T13:55:51.923 に答える
0

MasterPageを使用している場合、またはコントロールを動的に作成している場合は、コントロールIDの名前が#SomethingElseから#MainContent_SomethingElseに変更されている可能性があります。

これを確認する最も簡単な方法は、FirefoxまたはChrome用のWebDeveloperプラグインを使用することです。[情報]->[要素情報の表示]に移動し、問題のオブジェクトを選択します。ID、クラス、および祖先と子の情報が表示されます。IDが.NETによって動的に変更されているかどうかを確認します。

だとしたら:

これを防ぐために、サーバー側のコードで次の属性を使用して静的IDを作成できます

SomethingElse.ClientIDMode = ClientIDMode.Static;

その後、jQueryで参照できます

$('#SomethingElse').click(function() {
            if ($('input[title=Sector1]').attr('checked')) {
             //execute event
});
于 2010-09-02T23:47:02.750 に答える
0

ASP NETのチェックボックスとラジオボタンでは、入力の後に「入力」と「スパン」が生成されると思います。したがって、入力のみを選択する必要があります。

あなたが試すことができます:

$('.classname input[type=checkbox]').each(function() {
        this.checked = true;
});
于 2010-09-03T11:40:00.120 に答える
0

ここで2つのこと:コントロールを見つけることとチェックを実行すること。ASP.NETでは、コントロールの実際のIDと名前は、それらのコンテナーにIDがない場合でも、それが表示されるrunat="server"コンテナーに基づいて変更されることになります。

レンダリングされたASP.NETコントロールは、常に最初と同じ名前で終わるため、次のようなタグが付けられます。

<input type="radio" runat="server" id="sector1Radio" title="Sector1" />

次のようにレンダリングされる可能性があります

<input type="radio" runat="server" id="ctl0$ctl0$sector1Radio" name="ctl0_ctl0_SectorGroup" title="Sector1" />

この要素は、JQueryで「含む」選択構文を使用すると、レンダリングされた後でも見つけることができます。したがって、この要素を見つけるには、レンダリングされたら、次を使用できます。

$("input[type='radio'][id*='$sector1Radio']")

この構文は、IDに「$sector1Radio」が含まれているラジオボタンを検索します。

要素を取得したら、他の要素のクリックイベントから呼び出す次のコードを使用して、要素をチェックまたはチェック解除できます。

// check the radio button
$("input[type='radio'][id*='$sector1Radio']").attr('checked', true);    

// uncheck the radio button
$("input[type='radio'][id*='$sector1Radio']").attr('checked', false);   

最後にもう1つ...テキストのブロックを押したときにボタンをクリックするだけの場合(タグで囲み、AssociatedControlIdプロパティをラジオボタンのコントロール名に設定します。たとえば、...

<input type="radio" runat="server" id="sector1Radio" title="Sector1" />
<asp:label runat="server" id="lblsector1Radio" associatedControlID="sector1Radio">clicking here clicks and unclicks the radio button</asp:label>
于 2010-10-07T14:10:41.370 に答える