我很难找到一种方法,我可以更新输入字段而不用它在IE8中触发第二个更改事件。在FF 3.6中,此代码可以按照我的意愿工作。
我认为从函数事件处理程序返回false会停止触发任何其他事件,但在IE中不会出现这种情况。
这是我到目前为止所尝试的内容:
我有什么明显的遗失吗?我对JQuery很新,所以也许我犯了一个愚蠢的错误:)
谢谢!
以下是一些显示问题的测试代码:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<script>
var counter = 0;
$(document).ready(function() {
$('.eventHandler').live('change', handleChangeEvent);
});
function handleChangeEvent(event){
//$('.eventHandler').die();
$(this).val(counter++);
//$('.eventHandler').live('change', handleChangeEvent);
return false;
}
</script>
</head>
<body>
<form>
<input type="text" value="0.00" id="54501" class="eventHandler"/>
</form>
</body>
</html>
回答了我自己的问题
不允许作为新用户在8小时内回答我自己的问题。所以现在就放在这里
通过向Dr.Molle更多地解释问题来解决这个问题。总是有办法帮助你解决问题。
因为当我更新输入字段值时输入仍然具有焦点,当我点击它时会触发另一个“更改”事件。
因此,如果在更新输入字段值之前删除焦点,则永远不会触发另一个事件。
我将代码更改为此代码并按照我想要的方式在IE中运行:
var counter = 0;
$(document).ready(function() {
$('.eventHandler').unbind('blur').live('change', handleChangeEvent);
});
function handleChangeEvent(event){
$('body').focus();
$(this).val(counter++);
event.preventDefault();
return false;
}
感谢你的帮助Dr.Molle在解释它时帮助我解决了这个问题 - 干杯!!!
答案 0 :(得分:0)
您可以首先取消绑定已绑定的更改事件:
$('.eventHandler').unbind('change').live('change', handleChangeEvent);
击>