Ответ 1
Событие изменения не будет срабатывать, если фокус ввода не переключится на другие элементы управления
У меня возникла проблема с событием изменения 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. Любые предложения будут ценны. Н.
Событие изменения не будет срабатывать, если фокус ввода не переключится на другие элементы управления
<!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>
На самом деле, ошибка в Google Chrome, которая вызывает событие "change", не срабатывает, если что-то было изменено событием "keyup":
https://code.google.com/p/chromium/issues/detail?id=92492
Проблема, похоже, открыта с 2 мая 2013 года.
Вы можете использовать событие input
, которое работает как шарм:
$('#search-form .term').bind('input', function(){
console.log('this actually works');
});