jquery - 健全性检查 : change event not firing first time using keyboard

标签 jquery dom bug-tracking internet-explorer-6

我对此进行了大量研究,并发现了一堆报告的问题和解决方案,但普遍的共识似乎是 IE6 中的所有更改问题都已在 jQuery 1.4.2 中修复。

我遇到一个问题,更改事件在 jQuery 1.4.2 中未触发,但在 jQuery 1.3.2 中成功触发。这是在 IE6 中。

我正要为此提交一个错误,但为了我的理智,我想先将其发布在这里,看看是否有我遗漏的愚蠢的东西。我不明白为什么会这样......

<HTML>
<HEAD>
<TITLE>jQuery 1.4.2 Problem </TITLE>

<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script>
    $(document).ready( function() {
        $("#firstBox").change(function() {
            alert("CHANGE");
        });

        // ONLOAD of document autofocus into the first element...
        $("form").find(":input:visible:first").focus()
    });
</script>
</HEAD>

<BODY>
<form>

<select id="firstBox">
<option value="" selected="selected">--</option>
<option value="1">One</option>
<option value="2">Two</option>
</select>

<br><br>

<input size="10" id="secondBox">

</form>
</BODY>
</HTML>

很简单,对吧?页面加载时,给予第一个元素焦点。第一个元素发生变化时,警报。

如果您使用鼠标,它会按预期工作。页面加载,焦点位于下拉列表中,您更改选项,您会收到警报。

问题在于您是否使用键盘。页面加载,焦点位于下拉列表中,您按向下箭头。选项发生变化。离开 field ,没有警报。诡异的。更奇怪的是,如果您按 Tab 键返回字段并再次更改它(全部使用键盘),则这次 Tab 键退出后会触发更改事件。

有什么想法吗?

最佳答案

我决定应用此修复程序并且它有效:

$(function() {
    $("select").keyup(function () {
        $(this).triggerHandler("change")
    });
});

原因是我们的应用程序已经使用 IE6 一段时间了,用户习惯于选择立即触发更改的框(字段被隐藏/显示)。这就实现了这一点。

感谢您的建议

关于jquery - 健全性检查 : change event not firing first time using keyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883701/

相关文章:

javascript - 使用 jquery 选择标签中的多个值(带有值的 optgroup)

javascript - 我如何测试哪个节点先出现?

bug-tracking - 我可以在哪里提交有关 FOSS Java Sound 实现 org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine 的错误报告?

communication - 您如何让您的用户使用适当的 channel 报告错误?

javascript - 使用 JavaScript/KnockoutJS 查找列表中的特定属性

javascript - Bootstrap 轮播位置

javascript - 将 ajax 响应存储在外部数组中

javascript - 子窗口更改父位置时的客户端事件?

github - 如何在 GitHub 上拥有一个带有公共(public)问题跟踪器的私有(private)存储库?

javascript - 如何使用 jQuery 获取动态分类元素的索引