Изменить событие не активировать ввод текста с помощью jquery в Chrome

У меня возникла проблема с событием изменения jquery на текстовом входе, которое работает как в Firefox, так и в IE, но не в Chrome. У меня также есть событие keyup на текстовом входе, чтобы манипулировать входом, когда он вводится, но когда вход завершен, мне нужно запустить дополнительный код. Я попытался использовать событие "размытие" и событие "фокус", как кто-то здесь предложил в качестве замены, но тогда я не мог изменить фокус вообще - входные данные все время хватали его. Вот код:

 $('.textInput').keyup(function(event) { /* do stuff */ });
 $('.textInput').change(function(event) { alert('Changed!'); /* do other stuff */ });

и html:

 <input type="text" class="textInput" value="" />

Я использую jQuery 1.6.3. Любые предложения будут ценны. Н.

Ответ 1

Событие изменения не будет срабатывать, если фокус ввода не переключится на другие элементы управления

Ответ 2

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('.textInput').keyup(function (event) {
                var obj = $(this);
                if ((event.keyCode ? event.keyCode : event.which) === 13) {
                    $('#result').text('Enter has been triggered.');
                }
            }); ;

            $('.textInput').change(function (event) {
                var obj = $(this);
                $('#result').text('Input text has been changed:' + obj.val());
            }); ;
        });
    </script>
</head>
<body>
    <span id="result"></span>
    <br />
    Enter some text and press enter:
    <input type="text" class="textInput" value="" />
</body>
</html>

Ответ 3

На самом деле, ошибка в Google Chrome, которая вызывает событие "change", не срабатывает, если что-то было изменено событием "keyup":

https://code.google.com/p/chromium/issues/detail?id=92492

Проблема, похоже, открыта с 2 мая 2013 года.

Ответ 4

Вы можете использовать событие input, которое работает как шарм:

$('#search-form .term').bind('input', function(){
  console.log('this actually works');
});

Источник: https://gist.github.com/brandonaaskov/1596867