我有以下代码:
<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”处理程序调用?
答案 0 :(得分:3)
jQuery中已经报告了Issue,它已经使用最新的代码库修复了。 这是在jQuery 1.4 - 1.6.4上报告的。
答案 1 :(得分:2)
当您将表单元素的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);
});
顺便说一句,您可能希望使用the input
event代替change
。有一个jQuery插件:https://github.com/mathiasbynens/jquery.oninput.js