ラジオボタンがranat =“ server”の場合、jQueryでラジオボタンを確認しますか?
-
27-09-2019 - |
質問
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');
});
チェックされた= "checked"の代わりに.netコントロールに変換された場合(通常どおり)チェックされたので、それを変更しましたが、複数のブラウザーでDOMを検査すると、ラジオはどれもいないことがわかりました。ボタンがチェックされています:-(
jqueryを使用して、runat = "server"のラジオボタンをチェックする他の方法はありますか?
乾杯!
解決
あなたの問題は、入力のIDがもはやsector1radioではなく、むしろctl00_sector1radioなどであるということだと思います。これは、入力制御がコンテンツプレイスホルダーコントロール(マスターページを使用する場合)の内部にある場合に発生します。
生成されたHTMLコード(ブラウザ内)を確認して、これが当てはまるかどうかを確認できますか?入力コントロールのIDは何ですか?
この場合、JS jQueryコードを生成する必要があります
$('#SomethingElse').click(function() {
$('input[title=Sector1]').attr('checked','checked');
});
CodeBehindから、ControlIDのClientIDに置き換えられるように。
他のヒント
.is( ':checked')ASP.NET RadioButtonsとチェックボックスで動作します
$('#SomethingElse').click(function() {
$('input[title=Sector1]').is(':checked');
});
使用してみてください
$('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'));
});
他の人が示唆したように、ASP.NETは、指定したのと同じIDでHTMLを生成しません。
クイックソリューション:
IDを使用し続けることができますが、Jqueryに代わりにIDの終了を確認するように依頼します。例:
$( "入力[id $ = 'sector1radio'])。is( ":checked");
または、ニコが提案したように、タイトルと名前を確認してください
ASP.NETによって影響されないクラス要素を使用してください、例
u003Cinput type="radio" runat="server" id="sector1Radio" class="sector1Radio" name="SectorGroup" title="sector1" />
$( "input.sector1radio")。is( ":checked");
生成されたHTMLコードを表示し、IDが提供しているIDを確認することは、生成されたIDが異なる拡張機能を持つ可能性があるため、適切なjQueryセレクターを使用できます。
傑作を使用している場合、またはコントロールを動的に作成している場合、コントロールIDの名前が変更されている可能性があります#somethingelseは#maincontent_somethingelseになります。
これを確認する最も簡単な方法は、FirefoxまたはChromeにWebDeveloperプラグインを使用することです。情報 - > [要素]情報を表示し、問題のオブジェクトを選択します。 ID、クラス、祖先と子供の情報を提供します。 .NETによってIDが動的に変更されているかどうかを確認してください。
だとしたら:
これを防ぐために、サーバーサイドコードでは、次の属性を使用して静的IDを作成できます
SomethingElse.ClientIDMode = ClientIDMode.Static;
その後、jqueryを参照できます
$('#SomethingElse').click(function() {
if ($('input[title=Sector1]').attr('checked')) {
//execute event
});
ASP Netチェックボックスとラジオボタンでは、入力後に「入力」と「スパン」が生成されることです。したがって、入力のみを選択する必要があります。
あなたが試すことができます:
$('.classname input[type=checkbox]').each(function() {
this.checked = true;
});
ここでの2つのこと:コントロールを見つけてチェックの実行。 ASP.NETでは、コントロールの実際のIDと名前は、たとえそれらのコンテナにIDがない場合でも、runat = "サーバー"コンテナに基づいて変更されます。
レンダリングされた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で「Contains」選択構文を使用した場合にレンダリングされた後でも、この要素を見つけることができます。したがって、この要素を見つけるには、レンダリングされると、以下を使用できます。
$("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);
最後に...テキストのブロックを押したときにボタンをクリックしたい場合(タグにラップし、関連するコントロリッドプロパティをラジオボタンのコントロール名に設定します。
<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>
同じ問題がありました。 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は、属性に対してラベルのIDによって正しく参照される必要があります。 Webページがマスターページ内にある場合、入力タグのIDは次のようなものに変更されます ctl00_Something_radio1
, 、そして突然、属性のラベルが入力タグを参照しなくなりました。 ASP.NETでこれに注意してください!