0

と複数の無線入力を選択:jQueryのは、私は次のように無線グループのセットを有する動的名前

<INPUT TYPE='radio' NAME='SI1' VALUE='0'>Y</br> 
<INPUT TYPE='radio' NAME='SI1' VALUE='1'>N</br> 
<INPUT TYPE='radio' NAME='SI1' VALUE='2'>NA</br> 

<INPUT TYPE='radio' NAME='1S1' VALUE='0'>group1</br> 
<INPUT TYPE='radio' NAME='1S1' VALUE='1'>group2</br> 
<INPUT TYPE='radio' NAME='1S1' VALUE='2'>group3</br> 

<INPUT TYPE='radio' NAME='1S2' VALUE='0'>group1</br> 
<INPUT TYPE='radio' NAME='1S2' VALUE='1'>group2</br> 
<INPUT TYPE='radio' NAME='1S2' VALUE='2'>group3</br> 

<INPUT TYPE='radio' NAME='SI2' VALUE='0'>Y</br> 
<INPUT TYPE='radio' NAME='SI2' VALUE='1'>N</br> 
<INPUT TYPE='radio' NAME='SI2' VALUE='2'>NA</br> 

<INPUT TYPE='radio' NAME='2S1' VALUE='0'>group1</br> 
<INPUT TYPE='radio' NAME='2S1' VALUE='1'>group2</br> 
<INPUT TYPE='radio' NAME='2S1' VALUE='2'>group3</br> 

<INPUT TYPE='radio' NAME='2S2' VALUE='0'>group1</br> 
<INPUT TYPE='radio' NAME='2S2' VALUE='1'>group2</br> 
<INPUT TYPE='radio' NAME='2S2' VALUE='2'>group3</br> 

<INPUT TYPE='radio' NAME='2S3' VALUE='0'>group1</br> 
<INPUT TYPE='radio' NAME='2S3' VALUE='1'>group2</br> 
<INPUT TYPE='radio' NAME='2S3' VALUE='2'>group3</br> 

... 

基本的に、私はラジオボタンセットのサブグループを有しています。すべてのラジオボタンにグループヘッダーの値を割り当てたいと思います。 ユーザーが「SI2」という名前のオプショングループに値2を設定した場合、「2S」で始まるすべてのグループが値2

を持っている必要があり、私は私がグーグルからもらった'*=''~='セレクタを、使用しようとしましたしかし、何も働かなかった。

$('input[type=radio][name~=SI]').change(function() { 
    var names = section_index+'S'; 
    $('input[type=radio][name*='+names+']').value=this.value; 
}); 

これは第1セレクタ自体(SIを含む名)のために動作しない場合、私は次のように変更:

$('input[type=radio][name=SI'+section_index+']').change(function() { 
    var names = section_index+'S'; 
    $('input[type=radio][name*='+names+']').value=this.value; 
}); 

I変数を制御するようsection_indexを有するループ内に上記をしました、ここでは、1番目のセレクタが動作します(名前の完全一致)が、次のものはありません(section_indexを含む名前)。

グループの名前を変更しても問題が解決したら、それを変更できます。

私はjqueryを初めて使用していることをご了承ください。非常に明白なものを紛失した場合はご容赦ください。

+0

より多くのコードを追加してjsfiddle、歓声 –

+0

@RamSegevのスニペットに入れてください、ここでフィドルです。 Btw、私は問題を理解しました:)ありがとう https://jsfiddle.net/7h71kdab/ – Dipto

答えて

0

ラジオボタンを選択するだけでなく、プログラム的にチェックすることも問題です。

=~セレクタは、セレクタのために動作します。この場合*=又は^=のワード(スペースで区切られた) を含有するために働きます。

選択したラジオボタンを確認するには、prop機能を使用する必要があります。 change()も変更を直ちに反映するために呼び出す必要があります。

$('input[type=radio][name^="SI"]').change(function() { 
    var names = this.name.substring(2)+'S' 
    $('input[type=radio][name*='+names+'][value='+this.value+']').prop('checked',true).change(); 
}); 

https://jsfiddle.net/7h71kdab/1/

1

あなたはすべての "SI ..."ラジオボタンをターゲットにする必要があります。そのためには、開始 "SI"のラジオボタンをすべて見つける必要があります。名前が「SI」で始まるすべてのラジオボタンを見つけたので

$('input[type=radio][name^=SI]').change(function() { 
    var header_radio_clicked = $(this); 
    var value = header_radio_clicked.val(); 
    var target_name_prefix = value + "S"; 
    $('input[type=radio][name^='+target_name_prefix+']').val(value); 
}); 

input[type=radio][name^=SI]、および'input[type=radio][name^='+target_name_prefix+']'は、「S」(すなわち0S、1Sで始まるものがあります:セレクタは、「^ =」である「で始まります」 、2S)

+0

'^ ='は必須です。 :)。しかし、残念ながら、これは動作していません。 私はラジオボタンをチェックする解決策を考え出しました。 https://jsfiddle.net/7h71kdab/ – Dipto

関連する問題