javascript - 设置值后 Chrome 11+(可能还有 IE)不会触发 OnChange

标签 javascript jquery html

前段时间我为 jQuery 写了一个输入掩码扩展,它自动从输入元素中过滤掉任何非十进制/整数值,我今天才发现如果 keyup 事件改变了值,它不再调用 onchange 事件输入的:

示例:http://jsfiddle.net/At8Ht/37/

如果您在 Firefox 中查看它,它会显示“Halp!”更改后输入下方,当输入模糊/失去焦点时,但在 Chrome 中不会。

有人有什么建议吗?实际上,我想要做的就是在用户键入大量数字时自动插入逗号,例如,在用户松开“2”键后,键入“1552”会产生“1,552”。在 Chrome 11/12 之前,这一直运行良好:(

最佳答案

您可以使用 blur 和更冗长的代码来做到这一点:

$("#item")
    .focus(function() {
        this.previousValue = this.value;
    })
    .keyup(function() {
        this.value = new Date().getTime(); // or whatever magic code goes here
    })
    .blur(function() {
        if (this.previousValue !== this.value) {
            this.previousValue = this.value;
            $('#console').append('halp');
        }
    });

Demo on jsfiddle

关于javascript - 设置值后 Chrome 11+(可能还有 IE)不会触发 OnChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6364823/

相关文章:

javascript - 如何检测窗外的 MouseUp 事件?

javascript - 如何将 LiveReload 与 AngularJS 模板 URL 一起使用

javascript - 使用 Python 抓取网页的 JavaScript 页面

javascript - 正则表达式(替换所有非数字字符并强制执行 2 个小数位数字)

javascript - 异步 Node JS : Error: Callback was already called

javascript - JS使用toString获取字符串中的数组(不改变实际数组)

javascript - jQuery $('element' , this) 选择器,什么意思?

html - 让一封信延伸到页面下方?

html - 如何使用网格 Bootstrap 在左侧制作垂直导航全宽

javascript - 这个 Ember 教程已经过时了吗?