jQueryでは、name属性によって要素をどのように選択しますか?


328

以下のように、Webページに3つのラジオボタンがあります。

<label for="theme-grey">
  <input type="radio" id="theme-grey" name="theme" value="grey" />Grey</label>
<label for="theme-pink">
  <input type="radio" id="theme-pink" name="theme" value="pink" />Pink</label>
<label for="theme-green">
  <input type="radio" id="theme-green" name="theme" value="green" />Green</label>

jQueryでは、これら3つのうちいずれかがクリックされたときに、選択したラジオボタンの値を取得します。jQueryにはid(#)およびclass(。)セレクターがありますが、以下のように名前でラジオボタンを検索したい場合はどうしますか?

$("<radiobutton name attribute>").click(function(){});

この問題の解決方法を教えてください。


5
対応する 'label'タグの間にフィールドが含まれている限り、属性 'for'を厳密に指定する必要はありません
Lucius

2
jQuery 1.8以降では、これが変更されます。...以下で説明する回答を追加しました。
Kevin LaBranche、2012年

3
A1rPunの答えは最高です。jQuery以外のワンライナーです!
Rudey 2014

1
私のjsアプリで状態を維持するためにラジオボタンを使用しました。このスレッドを確認する前に1時間ほどデバッグしました。これをチェックしてください
Prasanth

プレーンJSの場合:document.querySelectorAll("input:radio[name=theme]").forEach(function() { this.onclick=function() { var value = this.value; }; });
mplungjan

回答:


339

これはそれを行うべきです、これはすべてこれに非常に似た例があるドキュメントにあります:

$("input[type='radio'][name='theme']").click(function() {
    var value = $(this).val();
});

そのスニペットに同じIDが複数あることにも注意してください。これは無効なHTMLです。クラスは一意である必要があるため、IDではなく要素のセットをグループ化するために使用します。


4
@gargantaun-ラジオボタンをクリックすると、どうなりますか?
Paolo Bergantino、2012年

11
いい視点ね。それはまだ「jQueryでその名前を使用して選択されたラジオボタン値を取得する方法」ではありませんが。「jQueryを使用してクリックしたときに選択したラジオボタンの値を取得する方法」です。小さな違いですが、少し困惑しました。
巨大な2012年

1
質問によると、この答えは正しいです。グローバルビューでは、クレイトンの答えを求めます。
クリッシュ

8
jQuery 1.8 [type='radio']では、:radioその代わりにjQueryを使用すると、ネイティブDOM querySelectorAll()メソッドによって提供されるパフォーマンスの向上をjQueryで利用できます。
アダム

2
@PaoloBergantinoの回答は、目的のラジオボタンをクリックした後に値を返すため、100%正解です。@ Clayton Rabendaの回答では、これは得られません。
Azam Alvi 2013

185

チェックされているラジオボタンを確認するには、次のことを試してください。

$('input:radio[name=theme]').click(function() {
  var val = $('input:radio[name=theme]:checked').val();
});

イベントはグループ内のすべてのラジオボタンでキャッチされ、選択したボタンの値がvalに配置されます。

更新:投稿後、DOMトラバーサルの使用が1つ少ないため、上記のPaoloの回答の方が良いと判断しました。この回答は、選択された要素をブラウザー間で互換性のある方法で取得する方法を示しているので、この回答はそのままにしておきます。


3
ベースは私が質問をどのように読むかをドンします、これは私が必要とした答えでした。:checkedは、方程式に欠けていたものです。ありがとう。
HPWD 2012年

9
jQuery 1.8の時点では[type='radio']:radioその代わりにjQueryを使用すると、ネイティブDOM querySelectorAll()メソッドによって提供されるパフォーマンスの向上をjQueryで利用できます。
アダム

コロンの後、誤って「チェック」する前にスペースを入れました。ですから、スペースがないことを確認してください。
喫煙猿

クリックイベントハンドラーから値を取得したくない場合に役立つ回答です。そうでない場合は、:checkedたとえば、thisキーワードがクリックされたボタンにマップされないフォーム送信イベントハンドラーなどで、どのボタンがチェックされているかを見つけるために使用する必要があります。
che-azeh 2015年

155
$('input:radio[name=theme]:checked').val();

私は単純に続行しました$("input[name=theme]:checked").val();:radio一部を除外すると、IE、FF、Safari、およびChromeで正常に動作するようです。jQv 1.3で動作する必要がありました...もちろん、「theme」という名前の要素は1つしかありません
morespace54

2
これはIMOの最良の答えです。「この名前のCHECKEDラジオの値を取得してください」と書かれています。イベントなどは必要ありません
ProVega 2015年

39

別の方法

$('input:radio[name=theme]').filter(":checked").val()

1
これは、値+1を取得したい場合に便利です
swapnesh

変数を使用してラジオボタンを保持できるため、これは確実です。たとえば$themeRadios = $('input:radio[name=theme'])、イベントハンドラーを設定し、フィルターを使用して値を取得できます$themeRadios.filter(":checked").val()
Joshua Pinter、2015年

このソリューションが大好きです。
アベル

20

これは私にとってはうまくいきます。たとえば、「名前」が同じ2つのラジオボタンがあり、チェックされたものの値を取得したいだけです。これを試してみてください。

$valueOfTheCheckedRadio = $('[name=radioName]:checked').val();

この回答が現在受け入れられている230以上の賛成投票よりも優れているのは、ユーザーがキーボードでラジオボタンを操作したときにこの回答も考慮されるためです。
gmeben 2015

16

次のコードを使用して、選択したラジオボタンの値を名前で取得します。

jQuery("input:radio[name=theme]:checked").val();

おかげでアドナン


うーん..前回の返信でコードの書式を修正しませんでしたか?ご自身で
お守り

13

この質問は、jQueryの1.7.2から1.8.2にアップグレードした後、エラーを調査していたときに見つかりました。jQuery 1.8以降でこの質問への回答方法を変更する変更があったため、ここに回答を追加します。

jQuery 1.8では、:radio、:checkbox、:textなどの疑似セレクターが廃止されました。

上記の操作を行うには、今だけ交換してください:radio[type=radio]

だからあなたの答えは今jQuery 1.8以上のすべてのバージョンになります:

$("input[type=radio][name=theme]").click(function() { 
    var value = $(this).val(); 
}); 

あなたはについて読むことができます1.8のreadmeに変更し、この変更のためのチケットの特定などに理由を理解:ラジオセレクタページ追加情報セクションの下。


5
:checkedは非推奨ではありません。だから、あなたは使うことができます$("input[type='radio'][name='theme']:checked")
アダム

12

本当に簡単なことをするためにライブラリーを含めたくない人のために:

document.querySelector('[name="theme"]:checked').value;

jsfiddle

現在の回答のパフォーマンス概要については、こちらを確認してください


1
この回答をありがとう。どんな形でも受け入れられる答えを得ることができなかったからです。
クリスホームズ

9

クリックイベントの前にデフォルトで選択されるラジオボタンの値を知りたい場合は、次のことを試してください。

alert($( "input:radio:checked")。val());

6

以下のように、ページに複数のラジオグループがある場合は、フィルター機能を使用できます。

$('input[type=radio]').change(function(){
    var value = $(this).filter(':checked' ).val();
    alert(value);
});

ここにフィドルのURLがあります

http://jsfiddle.net/h6ye7/67/


4
<input type="radio" name="ans3" value="help"> 
<input type="radio" name="ans3" value="help1">
<input type="radio" name="ans3" value="help2">

<input type="radio" name="ans2" value="test"> 
<input type="radio" name="ans2" value="test1">
<input type="radio" name="ans2" value="test2">

<script type="text/javascript">
  var ans3 = jq("input[name='ans3']:checked").val()
  var ans2 = jq("input[name='ans2']:checked").val()
</script>

4

true / false値が必要な場合は、これを使用します。

  $("input:radio[name=theme]").is(":checked")

3

このような何か?

$("input:radio[name=theme]").click(function() { 
 ...
}); 

ラジオボタンをクリックすると、それが選択された状態になると思います。そのため、これは選択されたラジオボタンに対して呼び出されます。


1
@はjQuery 1.3の時点では無効です(それ以前にも非推奨)。 blog.jquery.com/2009/01/05/help-test-jquery-13-beta-2 "古い、XPath、スタイル属性セレクター:[@ attr = value]。これらはかなり以前から廃止されています-そして、ようやくそれらを削除しています。修正するには、@を削除してください!」
racerror 09/12/06

3

同じページにラジオボタンのグループが複数ある場合、これを試してラジオボタンの値を取得することもできます。

$("input:radio[type=radio]").click(function() {
    var value = $(this).val();
    alert(value);
});

乾杯!



1

これでうまくいきました。

HTML:

<input type="radio" class="radioClass" name="radioName" value="1" />Test<br/>
<input type="radio" class="radioClass" name="radioName" value="2" />Practice<br/>
<input type="radio" class="radioClass" name="radioName" value="3" />Both<br/>

jquery:

    $( "。radioClass")。each(function(){
        if($(this).is( ':checked'))
        alert($(this).val());
    });

それが役に立てば幸い..



0

クラスセレクターを使用してASP.NET RadioButtonコントロールの値を取得することは常に空であり、ここに理由があります。

次のようにRadioButtonコントロールを作成ASP.NETします。

<asp:RadioButton runat="server" ID="rbSingle" GroupName="Type" CssClass="radios" Text="Single" />
<asp:RadioButton runat="server" ID="rbDouble" GroupName="Type" CssClass="radios" Text="Double" />
<asp:RadioButton runat="server" ID="rbTriple" GroupName="Type" CssClass="radios" Text="Triple" />

そしてASP.NETあなたのために次のHTMLをレンダリングしますRadioButton

<span class="radios"><input id="Content_rbSingle" type="radio" name="ctl00$Content$Type" value="rbSingle" /><label for="Content_rbSingle">Single</label></span>
<span class="radios"><input id="Content_rbDouble" type="radio" name="ctl00$Content$Type" value="rbDouble" /><label for="Content_rbDouble">Double</label></span>
<span class="radios"><input id="Content_rbTriple" type="radio" name="ctl00$Content$Type" value="rbTriple" /><label for="Content_rbTriple">Triple</label></span>

以下のためにASP.NET私たちが使用したくないRadioButton、彼らは、ユーザーの手から何らかの理由で変更することができますので、コントロール名またはIDを(コンテナ名、フォーム名、ユーザーコントロールの名前の変更は、...)あなたは上記のコードで見ることができるように。

RadioButtonjQueryを使用して値を取得するための残りの実行可能な唯一の方法は、次のようにまったく関係のない質問に対するこの回答で述べたcssクラスを使用することです

$('span.radios input:radio').click(function() {
    var value = $(this).val();
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.