Изменение события не запускается при вводе текста с использованием jquery в Chrome - PullRequest
11 голосов
/ 07 декабря 2011

У меня проблема с событием изменения 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. Любые предложения будут ценны. H.

Ответы [ 4 ]

12 голосов
/ 30 мая 2013

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

0 голосов
/ 28 июня 2016

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

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

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

0 голосов
/ 10 января 2014

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

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

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

0 голосов
/ 24 апреля 2012
<!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>
...