Подтвердить что ты не робот

JQuery группа переключателей .change метод

Я работаю с формой с радиокнопкой, которая является частью набора радиостанций, и только один может быть выбран одновременно (без проблем с единственным выбором). Один из этих радиостанций должен запускать код каждый раз, когда он выбирает другой код, если он не выбран (другое радио выбрано), im использует метод .change, и он запускает код при нажатии на него, но не тогда, когда он теряет выделение. Я хочу, чтобы переключать или быть в состоянии знать, когда он теряет выбор.

Я мог бы сделать это, добавив код в другой метод радиостанций .change, но есть много наборов радиостанций, и было бы больно, я ищу конфигурацию один раз.

Edit

Разметка сделана из механизма ASP MVC Razor следующим образом:

@Html.RadioButtonFor(x => x.SomeModel, new { @class = "special-radio" })
@* Other radios but without the 'specia-radio' class *@

JS:

// logging
$(function(){
  $('.special-radio').change(function(){
    console.log('change');
  });
});

Изменение строки появляется только при нажатии радиостанции "специальный радио".

4b9b3361

Ответ 2

Не запускается событие, когда радио отключено, потому что оно будет избыточным. Вместо этого попробуйте:

http://jsfiddle.net/hmartiro/g4YqD/1/

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

Ответ 3

Если добавить класс для не представляется возможным. Вы можете использовать контейнер с идентификатором для этих переключателей. Таким образом вы можете изолировать событие изменения. DEMO FIDDLE

var prev_data;
$('#special_radios input').change(function(){
    var me = $(this);
    //running function for check
  $('#log').html('<p>firing event for check: '+ me.attr('id') +'</p>');
    if(prev_data)
      uncheck_method(prev_data);  
  prev_data = me;
});

//@param obj = jquery raidio object
function uncheck_method(obj){
    $('#log').append('<p>firing event for uncheck: '+obj.attr('id')+'</p>');
    obj.prop('checked', false) 
    //console.log($('#special_radios input:checked'));
}

​

HTML

<input type="radio" name="zz" id="5"/>
<div id="special_radios">
   <input type="radio" name="rx" id="1"/>
   <input type="radio" name="ry"  id="2" />
   <input type="radio" name="rz" id="3"/>
   <input type="radio" name="ra"  id="4"/>
</div>
<div id="log"></div>
​

Ответ 4

Простое решение

var newValue; // vale of checked radio button
var oldValue; // value of unchecked radio button

$('.special-radio').change(function(){
    oldValue = newValue;
    newValue = $(this).val();
});

Если oldValue и newValue одинаковы, значит, не проверено.