JQuery .change()事件在IE和FF中的不同时间触发

时间:2011-05-18 18:56:50

标签: jquery events

我正在尝试在更改后检查复选框的状态。当我单击复选框或在我的“搜索文本框”上按Enter键时,它应切换复选框的选中状态,然后返回更新的值。我的示例适用于FF但不适用于IE

JSFiddle Example

HTML:

<!--
    hit enter and it should toggle the checkbox state and return the updated value
    it works as expected in FF but not in IE
-->

<input type='text' class='txt_search' />
<input type='checkbox' class='chk_test' />

的javascript:

$('.txt_search').keyup(function(event){
    if(event.keyCode == '13')
    {
        $('.chk_test').click();
    }
});


$('.chk_test').change(function(){
   var self=$(this);
   alert(self.prop('checked'));
});

1 个答案:

答案 0 :(得分:2)

虽然我无法复制问题,但这可能是导致问题的原因:您在复选框上调用click事件,然后绑定到change事件。相反,请尝试恰当地设置复选框的属性。您也可以根据他们是否在文本框中输入内容来切换此方法:

更新:现在使用bind与IE8配合使用。

$('.txt_search').keyup(function(event){
    if(event.keyCode == '13')
    {
        var chk =  $('input.chk_test');
        chk.prop('checked', !!$(this).val());
    }
});

$('.chk_test').bind('change', function(){
    var self=$(this);
    alert(self.is(':checked'));
});

提琴证明:http://jsfiddle.net/CVQjd/6/