我有一些代码基本上如下
.on("keyup", "input", function (e) {
this.value = utils.formatNumber(this.value);
})
.on("change", "input", function(e) {
expensiveFunctionThatUpdatesView();
})
实际上,这些值在用户键入时被正确格式化,但是当用户选择或单击离开输入字段时,不会触发 onChange 事件(因此不会更新视图)。如果我注释掉 keyup 事件处理函数的主体,一切都会按预期工作(格式化除外)。为什么会这样?
AFAIK,要触发 onchange 事件需要满足两个条件:
- 必须通过触发 onfocus 事件(存储旧值)的东西进入控制/输入字段。
- 存在于焦点上的值与存在于“退出”/模糊上的值不同
顺便说一句,我尝试将代码更改为“模糊”,但是如果我格式化该字段也不会触发。测试时使用 Chrome。