【问题标题】:IE10 not responding to an input element changeIE10 不响应输入元素更改
【发布时间】:2013-09-23 21:52:09
【问题描述】:

我在这里有一个 jsfiddle - http://jsfiddle.net/w9XLn/1/ - 带有一个简单的输入和一个更改处理程序:

HTML

 <input id="helpQ" type="text">

jQuery

$(function() {
    $('input#helpQ').change(function(e) {
       console.log("helpQ changed");
    });
});

当您在字段中输入一些文本并按 Enter 键时,console.log 消息会按预期出现,适用于 Firefox、Chrome 和 Safari,但不适用于 IE(我正在运行 IE10)。有谁知道为什么 IE 这么难?

谢谢

【问题讨论】:

  • 传统上,当元素失去焦点时会发生更改事件,在您的情况下,按 Enter 不会更改焦点。直到我读到你的问题,我才知道按 Enter 会在任何浏览器中触发它(至少,当有问题的文本输入不是 Enter 提交的表单时)。
  • 是的,你已经得到了答案。在这种情况下,IE 没有将 Enter 识别为 onchange 触发器,而其他所有人都过于宽容,这是正确的做法。为了在 IE 中进行这项工作,我需要捕获 keydown,检查它是否为 13,如果是,则读取该字段的值。谢谢。

标签: jquery internet-explorer


【解决方案1】:
$(function(){
    $('input#helpQ').change(function(e){
        console.log("helpQ changed")
    })
    // Help IE10 because it doesn't trigger change until field loses focus.
    $('input#helpQ').keydown(function(e){
        if(e.which == 13) $(this).change()
    })
})

请注意,在某些浏览器中,console.log() 在控制台未打开时会引发异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 2013-12-13
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2015-06-12
    相关资源
    最近更新 更多