通过JavaScript代码更改<input>
元素的值时会发生什么情况?例如:
$input.value = 12;
input
事件在这里没有帮助,因为不是用户在更改值。在Chrome上进行测试时,不会触发
change
事件。也许是因为该元素没有失去焦点(它没有获得焦点,所以它不能失去它)? 最佳答案
基于@ t-j-crowder和@ maciej-swist答案,让我们添加一个,带有“.apply”功能,该功能可防止无限循环而无需重新定义对象。
function customInputSetter(){
var descriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value");
var originalSet = descriptor.set;
// define our own setter
descriptor.set = function(val) {
console.log("Value set", this, val);
originalSet.apply(this,arguments);
}
Object.defineProperty(HTMLInputElement.prototype, "value", descriptor);
}
关于javascript - JavaScript更改输入值时发生事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42427606/