jQueryセットラジオボタン


134

ラジオボタンを設定しようとしています。値またはIDを使用して設定したい。

これは私が試したものです。

$('input:radio[name=cols]'+" #"+newcol).attr('checked',true);

newcol ラジオボタンのIDです。

多分少し編集が必要です。

ラジオボックスには2つのセットがあり、1つはcolsを含み、もう1つは行を含みます。だから私はidを使わないことにポイントがあると思います。私の悪い。だから私は例として持っています:

<input type="radio" name="rows" class="listOfCols" 
   style="width: 50%; " value="Site"></input>

そして

<input type="radio" name="cols" class="listOfCols" 
   style="width: 50%; "  value="Site"></input>

IDを削除して、正しいIDを設定する必要があります。


回答:


196

セレクターinput:radio[name=cols]は、idの要素newcol(その変数の値)の子孫を探します。

代わりにこれを試してください(とにかくIDで選択しているため)。

$('#' + newcol).prop('checked',true);

ここにデモがあります:http : //jsfiddle.net/jasper/n8CdM/1/

また、jQuery 1.6以降、プロパティを変更するための推奨される方法は.prop()次のとおりです:http : //api.jquery.com/prop


5
以下のための1 propattrattrプロパティでは非推奨であり、jQuery 2.0では機能しません))
gavenkoa 2013

87

私はここで答えを見つけました:https : //web.archive.org/web/20160421163524/http :
//vijayt.com/Post/Set-RadioButton-value-using-jQuery

基本的に、1つのラジオボタンをチェックする場合は、値を配列として渡す必要があります。

$('input:radio[name=cols]').val(['Site']);
$('input:radio[name=rows]').val(['Site']);

こんにちはそのリンクはそれに提案された内容がありません。リンクを削除するために編集を拒否し続けるのはなぜですか。問題に関しては何も含まれていません。
Menuka Ishan 2016

@MenukaIshan、要点は次のとおりです。リンクはweb.archive.orgで利用可能であり、最初にそれを書いて、私が答えのアイデアを手に入れた人はそのクレジットを受け取る必要があります。リンクを削除しないでください。元の投稿を表示したい場合は、リンクをコピーして貼り付けてください(web.archive.orgではなく古いページに移動する理由がわかりません)
Chococroc

2
@Chococroc質問のマークダウンを正しく設定していません。Webアーカイブのバージョンを確認し、正しくリンクしました。レビュー後サイトに正しくリンクします。
Menuka Ishan


15

セレクターで、ラジオボタンのネストされた要素を指定されたIDでフェッチしようとしているようです。ラジオボタンをチェックしたい場合は、セレクターでこのラジオボタンを選択し、他のものは選択しないでください。

$('input:radio[name="cols"]').attr('checked', 'checked');

これは、マークアップに次のラジオボタンがあることを前提としています。

<input type="radio" name="cols" value="1" />

ラジオボタンにIDがあった場合:

<input type="radio" name="cols" value="1" id="myradio" />

idセレクターを直接使用できます。

$('#myradio').attr('checked', 'checked');

cols名前の付いたラジオが複数ある場合は$('input:radio[name="cols"]').attr('checked', 'checked');、最後のラジオだけが選択されます。それぞれでコードを実行しますが、checkedプロパティを設定するたびに、以前に設定した要素が設定解除されます。これがデモです:jsfiddle.net/jasper/n8CdM/2
Jasper

@Jasper、はい、そうです。これが、IDセレクターの使用を提案した理由です。
Darin Dimitrov

12

次のコードを試すことができます:

$("input[name=cols][value=" + value + "]").attr('checked', 'checked');

これにより、ラジオ列のチェックされる属性と値が指定どおりに設定されます。


1
...the most important concept to remember about the checked attribute is that it does not correspond to the checked property.出典:api.jquery.com/attr
Jasper

10

なぜ必要なのか'input:radio[name=cols]'。あなたのhtmlを知らないが、IDが一意であると仮定して、あなたは単にこれを行うことができます。

$('#'+newcol).prop('checked', true);

6

これを試して:

$("#" + newcol).attr("checked", "checked");

で問題が発生しattr("checked", true)たため、代わりに上記を使用する傾向があります。

また、IDがあれば、他に選択する必要はありません。IDは一意です。


1
このようなものについては、propはattrよりも優れています
RozzA 2013

attrはjQuery 1.9以降では使用されていません。
Mike_Laird 2013

あなたは正しいですが、最終的にはあなたの特定の状況に依存します。コードが常にjQuery 1.6以降で実行される場合は、propが適しています。ただし、コードが古いバージョンで実行されている可能性がある場合、解決策は簡単ではありません。たとえば、私はjQuery PickListプラグインを維持しており、jQuery 1.4以降をサポートしているため、単にpropを使用することはできません。これはオープンチケットなので、エレガントな提案があればぜひ聞いてください。まだ調査する時間がありませんでした。
Awnry Bear、2013

問題は、ソリューションの下位互換性が高くても、この場合は機能しないことです。Aを選択すると、新しいchecked="checked"属性が取得され、ブラウザーはそれをチェック済みとして表示し、次にBを選択すると同じことが起こります。ここでもう一度Aを選択すると、すでにchecked="checked"属性があり、何も変更されません。そのBの副作用がまだ選択されているように、ではないA.
Kyborek

2

以来newcol、ラジオボタンのIDである、あなたは、単に以下のようにそれを使用することができます。

$("#"+newcol).attr('checked',true);

2

を使用して.filter()も機能し、ID、値、名前に対して柔軟です。

$('input[name="cols"]').filter("[value='Site']").attr('checked', true);

このブログで見られる)


1
これも同様に有効な答えだと思いますが、prop()メソッドを使用する必要があります:$( 'input [name = "cols"]')。filter( "[value = 'Site']")。prop( 'checked '、true);。ユーザーが「値またはID」で設定したい。すべての無線オプションにid値を設定したくない場合があるので、名前で取得し、値でフィルタリングすると便利です。
Zac Imboden、2018



0

この場合、選択した回答が機能します。

しかし、問題は、radiogroupと動的IDに基づいて要素を見つけることに関するものでした。答えは、表示されたラジオボタンに影響を与えないままにすることもできます。

この行は、画面上に変更を表示しているときに要求されたものも正確に選択します。

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