JQuery проверить переключатель на клавиатуре - PullRequest
1 голос
/ 17 сентября 2011

У меня установлены две радиокнопки, и я хочу, чтобы, если я выберу «да» в первом наборе, он должен автоматически выбрать другую, так как да, вот мой код

<input type="checkbox" name="saver" value="yes" id="saver"> Yes 
<input type="checkbox" name="saver" value="no" id="saver"> No 

<input type="checkbox" name="sendmail" value="yes" id="sendmail"> Yes
<input type="checkbox" name="sendmail" value="no" id="sendmail"> No

Так что я хочу, если я выберу «да» в первом наборе, он должен автоматически выбрать «да» во втором наборе, Jquery идет сюда

$('#saver').keyup(function(){
   var checkbox_value = $('#saver:checked').val();

   if(checkbox_value == 'yes')
   {
      $('input[name="sendmail"]').attr('checked', true);
   }
});

Он выбирает другой набор автоматически, но вместо да

Ответы [ 4 ]

3 голосов
/ 17 сентября 2011

Ваш HTML должен использовать уникальные идентификаторы

<input type="checkbox" name="saver" value="yes" id="saver-yes"> Yes 
<input type="checkbox" name="saver" value="no" id="saver-no"> No 

<input type="checkbox" name="sendmail" value="yes" id="sendmail-yes"> Yes
<input type="checkbox" name="sendmail" value="no" id="sendmail-no"> No

Этот javascript прост (и работает - см. Доказательство: http://jsfiddle.net/kSVx7/1/)

$('#saver-yes').change(function() {

  if($('#saver-yes:checked').val() == 'yes')
     $('#sendmail-yes').attr('checked', true);


});

Используя изменения вместо keyup, выможет также воздействовать на щелчки мышью (или даже сенсорные события).

При обращении к уникальным идентификаторам нет никакой двусмысленности в том, на какой элемент вы ссылаетесь, поэтому jQuery знает, над чем работать.

1 голос
/ 17 сентября 2011

Попробуйте это -

$('#saver').change(function() {
    var checkbox_value = $('#saver:checked').val();

    if (checkbox_value == 'yes') {
        $('input[name="sendmail"][value="yes"]').attr('checked', true);
    }
});

Я изменил событие 'keyup' на 'change', но вы можете изменить его обратно на 'keyup', если хотите.

Рабочая демоверсия - http://jsfiddle.net/XyKM7/

0 голосов
/ 17 сентября 2011

Пара вещей ...

Если значения в каждой группе флажков являются взаимоисключающими, то радиобатчики будут более семантически правильным выбором.

Во-вторых, часть скрипта, которая устанавливаетзначение предназначено не только для флажка «да», но и для всей группы - для этого нужно добавить еще один фильтр:

$ ('input [name = "sendmail"] [value = "yes"]') .attr (' флажок ', true)

Если вы оставите их в качестве флажков, вам также придется иметь дело с снятием флажка no.

0 голосов
/ 17 сентября 2011

Идентификатор может быть определен только один раз, и вместо keyup следует использовать change.

http://jsfiddle.net/7hq2V/1/

HTML:

<input type="checkbox" name="saver" value="yes" id="saver-yes"> Yes 
<input type="checkbox" name="saver" value="no" id="saver-no"> No 

<input type="checkbox" name="sendmail" value="yes" id="sendmail-yes"> Yes
<input type="checkbox" name="sendmail" value="no" id="sendmail-no"> No

JS:

$('#saver-yes').change(function() {
    if ($(this,':checked')) {
        $('#sendmail-yes').attr('checked', true);
    }
});
...