Событие jQuery onchange запускается дважды в IE8
У меня есть следующий код:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function()
{
$('#test').bind("change", function()
{
alert(this.value);
this.value = jQuery.trim(this.value);
});
});
</script>
<input type="text" id="test" />
<br />
<input type="radio" />
</body>
</html>
В IE8, если я введу любой текст для "проверки" ввода и нажму "Tab", я получу сообщение с предупреждением дважды.
Но если я прокомментирую строку "this.value = jQuery.trim(this.value);" сообщение будет показано только один раз.
Почему это случилось? И как я могу избежать двойного вызова обработчика onchange?
2 ответа
О проблеме сообщили в jQuery, и она была исправлена с использованием самой последней базы кода. Об этом сообщалось на jQuery 1.4 - 1.6.4.
Когда вы устанавливаете value
свойство элемента формы с другим значением, change
событие пожары.
Итак, в вашем коде:
$('#test').change(function() {
// This is executed whenever the `change` event fires
// Setting a new value will trigger the `change` event again
this.value = $.trim(this.value);
});
Кстати, вы, вероятно, хотите использовать input
событие вместо change
, Для этого есть плагин jQuery: https://github.com/mathiasbynens/jquery.oninput.js