web-dev-qa-db-ja.com

特定のラジオボタンがチェックされているかどうかを確認します

JQueryのドキュメントを見た後に問題が発生しています。特定のラジオボタンのチェックと選択されているかどうかに応じて、jqueryメソッドでtrue/falseを返すようにしています

私はいくつかのことを試しましたが、これを正しくすることができませんでした:

_<input type="radio" runat="server" name="testGroup" id="test1" /><label for="<%=test1.ClientID %>" style="cursor:hand" runat="server">Test1</label>
<input type="radio" runat="server" name="testGroup" id="test2" /><label for="<%=test2.ClientID %>" style="cursor:hand" runat="server">Test2</label>
<input type="radio" runat="server" name="testGroup" id="test3" /> <label for="<%=test3.ClientID %>" style="cursor:hand">Test3</label>
_

私の方法ではこれがあります:

_return $("input[@name='test2']:checked");
_

$("input[@name='test2']:checked");で未定義を取得しています

更新しました:

例:

_<input type="radio" runat="server" name="radioGroup"  id="payPalRadioButton" value="paypalSelected" /> 
_

これはまだ「未定義」を返します:

_$("input[@name=radioGroup]:checked").attr('payPalRadioButton'); 
_

これを試すと、ラジオボタンを選択しても「false」になります。

_$('input:radio[name=radioGroup]:checked').val() == 'paypalSelected'
_
33
PositiveGuy

セレクタは入力フィールドを選択せず​​、選択した場合はjQueryオブジェクトを返します。これを試して:

$('#test2').is(':checked'); 
72
PetersenDidIt

間違ったアプローチを使用していると思います。入力要素のvalue属性を設定する必要があります。入力要素の.val()を設定して返す例については、 。val()のドキュメント を確認してください。

すなわち。

<input type="radio" runat="server" name="testGroup" value="test2" />

return $('input:radio[name=testGroup]:checked').val() == 'test2';
6
ghoppe

1.属性名に@プレフィックスはもう必要ありません:

http://api.jquery.com/category/selectors/attribute-selectors/

注:jQuery 1.3 [@attr]スタイルセレクターは削除されました(以前はjQuery 1.2で非推奨になりました)。セレクタを再度機能させるには、セレクタから「@」記号を削除するだけです。

2.セレクタはnameでラジオボタンをクエリしますが、その属性はHTML構造で定義されていません。

4
naivists

他の人のための適切な作業ソリューションを見つけました。

// Returns true or false based on the radio button checked
$('#test1').prop('checked')


$('body').on('change','input[type="radio"]',function () {
alert('Test1 checked = ' + $('#test1').prop('checked') + '. Test2 checked = ' + $('#test2').prop('checked') + '. Test3 checked = ' + $('#test3').prop('checked'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="radio" runat="server" name="testGroup" id="test1" /><label for="<%=test1.ClientID %>" style="cursor:hand" runat="server">Test1</label>

<input type="radio" runat="server" name="testGroup" id="test2" /><label for="<%=test2.ClientID %>" style="cursor:hand" runat="server">Test2</label>

<input type="radio" runat="server" name="testGroup" id="test3" /> <label for="<%=test3.ClientID %>" style="cursor:hand">Test3</label>

そしてあなたの方法であなたは

return $('#test2').prop('checked');
0
Hamza Khanzada

派手なセレクターのすべてに悩まされるのはなぜですか?これらのid = ""属性を適切に使用している場合、 'test2'がページ上のそのidを持つ唯一のタグである必要があります。次に、.checkedブールプロパティにより、チェックされているかどうかが通知されます。

if ($('test2').checked) {
    ....
}

また、これらのラジオボタンに値を設定していないため、どのボタンを選択しても、サーバーに送信された空の「testGroup =」のみが取得されます。

0
Marc B

「名前」の前の「@」を削除する必要があります。もう必要ありません(現在のjQueryバージョンの場合)。

「test2」という名前のすべてのチェックされた要素を返したいが、その名前の要素がなく、「test2」のidを使用している。

IDを使用する場合は、次を試してください。

return $('#test2').attr('checked');
0
Cᴏʀʏ

$("input[@name='<%=test2.ClientID%>']:checked");

これを使用し、ClientIDは.netによって作成されたランダムIDを取得します。

0
Rakesh