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

Gre*_*reg 14 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" />
Run Code Online (Sandbox Code Playgroud)

(假设完整的HTML和脚本在所有准备就绪时触发)

单击以选择单选选项时,更改事件似乎会触发,但在使用键盘更改选择时则不会触发.可以做些什么吗?

编辑 - 如果我使用bind或没有任何区别live- 这只是一个错误吗?

澄清一下,即使失去焦点,事件也不会触发.

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

编辑3 - 正如DonaldIsFreak指出这似乎是一个铬问题

Joh*_*ock 24

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

使用它就是你用你的例子实现它的方法:这里是以下代码的演示http://www.jsfiddle.net/uDkdJ/1/ 我在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(); }
  });
});
Run Code Online (Sandbox Code Playgroud)


and*_*lzo 7

在jquery 1.4.2中,@ selector不起作用.查看此示例以查看它是否对您有用,请根据"单击"更改"更改"事件.

HTML

<input type="radio" name="rdio" value="a" checked="checked" />
<input type="radio" name="rdio" value="b" />
<input type="radio" name="rdio" value="c" />

<br />

<div id="test"></div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

$("input[name='rdio']").click(function(){
    if ($("input[name='rdio']:checked").val() == 'a')
        $("#test").append("<div>a</div>");
    else if ($("input[name='rdio']:checked").val() == 'b')
        $("#test").append("<div>b</div>");
    else
        $("#test").append("<div>c</div>");
});
Run Code Online (Sandbox Code Playgroud)

例子
ref 1
ref 2