Mam zestaw grup radiowych w następujący sposób:

<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>

...

Zasadniczo mam grupę zestawu przycisku radiowego. Chcę przypisać wszystkie przyciski radiowe wartość nagłówka grupy. Na przykład, jeśli użytkownik ustawia wartość 2 w grupie opcji o nazwie "SI2", wszystkie grupy rozpoczynające się od "2S" powinny mieć wartość 2.

Próbowałem użyć selektora '*=' i '~=', którą dostałem z Googling, ale nic nie działało.

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

Nie działa to dla samego wyboru (nazwa zawierająca SI), a następnie zmieniłem na następujące:

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

Zrobiłem powyższe w pętli, która ma zmienną sterującą, tutaj, pierwsza selektor działa (nazwa dokładnego dopasowania), ale następny nie (nazwa zawierająca section_index).

W porządku mogę zmienić nazwę grup, jeśli to pomoże.

Proszę wziąć pod uwagę, że jestem nowy w jQuery, więc proszę, jeśli przegapiłem coś bardzo oczywistego.

0
Dipto 15 luty 2017, 23:06

2 odpowiedzi

Najlepsza odpowiedź

Problemem jest więc problem nie tylko przy wyborze przycisków radiowych, ale także programowo to sprawdzanie.

=~ Selektor działa tylko do zawierania słowa (oddzielone przestrzenią) W tym przypadku *= lub ^= będzie działać dla selektora.

Aby sprawdzić wybrane przyciski radiowe, należy użyć funkcji prop. Należy również wywołać change(), aby natychmiast odzwierciedlić zmianę.

$('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
Dipto 15 luty 2017, 22:05

Więc chcesz kierować wszystkie przyciski radiowe "Si ..."; W tym celu musisz znaleźć wszystkie przyciski radiowe, które Start z "SI". Selektor dla "zaczyna się od" to "^ =":

$('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);
});

Więc input[type=radio][name^=SI] znajduje wszystkie przyciski radiowe, których nazwa zaczyna się od "Si", a {X1}} znajdzie te, które zaczynają się od "S" (I.e 0s, 1s, 2S)

Mam nadzieję że to pomoże!

1
nibnut 15 luty 2017, 21:33