当JavaScript修改输入类型=“ text”时,我想立即检测到它的变化。当用户手动更改它时,可以通过以下方式触发检测:
onchange="myfunction();" onkeyup="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();"
Run Code Online (Sandbox Code Playgroud)
我只是想不通这一点。
您可以使用MutationObserver允许观察属性更改的对象。但是,我不确定当您这样做而el.value = ...不是 时是否会调用回调el.setAttribute('value', ...)。
value您还可以使用为属性定义自定义设置器Object.defineProperty。但是,我从未在 DOM 元素上这样做过,如果已经定义了 setter,您可能需要确保新的 setter 也调用它。您也许可以用来Object.getOwnPropertyDescriptor获取当前的设置器(如果有)。
最后,作为最后的手段,您始终可以使用setInterval定期检查value元素的属性是否更改,但我不太喜欢这种方法。然而,它可能是唯一的跨浏览器。
不幸的是,我现在无法测试其中的任何一个,但我稍后会回来更新这个答案。
| 归档时间: |
|
| 查看次数: |
7517 次 |
| 最近记录: |