16

私は、ラジオのセットの一部であるラジオボタンを備えたフォームを使用しており、一度に選択できるのは1つだけです(単一選択では問題ありません)。これらのラジオの 1 つは、選択されていないとき (別のラジオが選択されているとき) に異なるコードを選択するたびに.changeコードを起動する必要があります。私が欲しいのは、選択を失ったときに切り替えるか、知ることができるようにすることです。

他のラジオの方法にコードを追加することもできますが.change、ラジオのセットがたくさんあり、面倒です。1 回限りの構成を探しています。

編集

マークアップは、次のような 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');
  });
});

文字列の変更は、'special-radio' ラジオをクリックしたときにのみ表示されます。

4

3 に答える 3

3

無線がチェックされていない場合、冗長になるため、トリガーされるイベントはありません。代わりにこれを試してください:

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

ラジオのセットに変更イベントを配置し、選択したラジオが特別な場合は 1 つのイベントを発生させ、それ以外の場合は別のイベントを発生させます。

于 2012-08-31T19:07:18.770 に答える
2

のクラスを追加できない場合。これらのラジオ ボタンの識別子を持つコンテナーを使用できます。このようにして、変更イベントを分離できます。 デモフィドル

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>
​
于 2012-08-31T19:21:12.783 に答える