jquery – 使用键盘选择单选按钮时,更改事件不触发

前端之家收集整理的这篇文章主要介绍了jquery – 使用键盘选择单选按钮时,更改事件不触发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<script>
$("input[name='my_radio_button']").change(function(){
    if ($("input[@name='my_radio_button']:checked").val() == 'ONE'){
                do_this_stuff(); 
    } else { do_other_stuff(); }
});
</script>

<input type="radio" name="my_radio_button1" id="radio1" value="ONE" checked />
<input type="radio" name="my_radio_button2" id="radio2" value="TWO" />

(假设完成HTML并且脚本在所有准备就绪时都会触发)

当点击选择一个收音机选项时,更改事件似乎触发,但是当使用键盘更改选择时,更改事件似乎不起作用.有什么可以做的吗?

编辑 – 没有什么不同,如果我使用绑定或活 – 这只是一个错误

要澄清,即使焦点丢失,事件也不会发生.

编辑2 – 没有人知道这个的原因?

编辑3 – 作为DonaldIsFreak指出,这似乎是一个镀铬问题

解决方法

这是一个可靠的修复 http://evilstreak.co.uk/blog/fixing-change-events-on-radios

并且使用它是你将如何实现它与你的例子:
这里是http://www.jsfiddle.net/uDkdJ/1/以下的代码demo
我在FF3.6,IE8,Safari5,Chrome7和Opera10.65中测试了这个演示

$.fn.fix_radios = function() {
  function focus() {
    if ( !this.checked ) return;
    if ( !this.was_checked ) {
      $( this ).change();
    }
  }

  function change( e ) {
    if ( this.was_checked ) {
      e.stopImmediatePropagation();
      return;
    }
    $( "input[name=" + this.name + "]" ).each( function() {
      this.was_checked = this.checked;
    } );
  }
  return this.focus( focus ).change( change );
}

$(function() {
  $( "input[type=radio]" ).fix_radios();
  $("input[name='my_radio_button']").change(function(){
    if ($("input[@name='my_radio_button']:checked").val() == 'ONE'){
      do_this_stuff(); 
    } else { do_other_stuff(); }
  });
});

猜你在找的jQuery相关文章