可以从全局监听change事件来监听
- document.addEventListener('change', function(){
- //...
- })
复制代码 但是这种监听对.value赋值的方式无效(change只会对用户手动通过键盘修改的方式触发)
- input.value = 'xxx' // 不会触发change回调
复制代码 因此,我们需要改写一下原生的.value方法
- var desc = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')
- Object.defineProperty(HTMLInputElement.prototype, 'value', {
- ...desc,
- set(v) {
- console.log('set',v);
- desc.set.call(this, v)
- }
- })
复制代码 这样所有只要有value改变都可以监听到了
|