通过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/

10-10 22:26