gpt4 book ai didi

javascript - 当以编程方式更改输入时,更改的解决方案不起作用

转载 作者:行者123 更新时间:2023-11-30 23:47:01 25 4
gpt4 key购买 nike

我已经读过Why onchange doesn't work?现在我知道了,

The onchange event only fires if the user changes the value of the input. It isn't supposed to fire if the input is changed programmatically.

但是我有一个输入字段,当用户通过网站内的 Google map 小部件更改位置时,该输入字段会自动填充。当发生这种情况时,我想获取自动填充的值并填充另一个输入字段。 当输入以编程方式更改时,如何检测或触发函数?

最佳答案

您可以通过覆盖输入的 value 属性的 setter 函数来实现此目的。因此,每次有人以编程方式设置时,您的重写 setter 都会被触发:

const input = document.getElementById('input');

const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(input), 'value');

Object.defineProperty(input, 'value', {
set: function(t) {
console.log('Input value was changed programmatically');
return descriptor.set.apply(this, arguments);
},
get: function() {
return descriptor.get.apply(this);
}
});

function changeInput() {
input.value += '1';
}
<input id="input">
<button onclick="changeInput()">Change</button>

关于javascript - 当以编程方式更改输入时,更改的解决方案不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58450386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com