Событие JQuery .change () срабатывает в разное время в IE и FF - PullRequest
1 голос
/ 18 мая 2011

Я пытаюсь получить проверенное состояние флажка после его изменения.Когда я нажимаю флажок или нажимаю клавишу ввода в моем «текстовом поле поиска», он должен переключить проверенное состояние флажка, а затем вернуть обновленное значение.Мой пример работает в FF, но не в IE

Пример JSFiddle

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 Ответ

2 голосов
/ 18 мая 2011

Хотя я не смог воспроизвести проблему, это может быть причиной вашей проблемы: вы вызываете событие click для флажка, а затем привязываетесь к событию change. Вместо этого попробуйте просто установить атрибут флажка соответствующим образом. Вы также можете переключаться с помощью этого метода в зависимости от того, что они ввели что-то в текстовое поле:

ОБНОВЛЕНИЕ : теперь работает с IE8 с помощью bind.

$('.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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...