Javascript 为什么输入事件不使用隐藏的输入类型?

Javascript 为什么输入事件不使用隐藏的输入类型?,javascript,Javascript,我必须得到隐藏输入的值,当它改变时。但是我的听众没有工作 const citySelector = document.querySelector('#city_lat'); citySelector.addEventListener('change', function () { alert('changed'); }); 选择器是正确的。我已在浏览器控制台中进行了检查。事件“输入”不起作用当用户更改输入值时,将触发更改事件。输入事件在用户输入数据时触发 如果您使用JavaScript更

我必须得到隐藏输入的值,当它改变时。但是我的听众没有工作

const citySelector = document.querySelector('#city_lat');
citySelector.addEventListener('change', function () {
   alert('changed');
});

选择器是正确的。我已在浏览器控制台中进行了检查。事件“输入”不起作用

当用户更改输入值时,将触发更改事件。输入事件在用户输入数据时触发

如果您使用JavaScript更改输入的值,它们不会触发

由于它是一个隐藏的输入,JavaScript是唯一可以更改输入值的方法

如果希望在代码更改值时触发事件处理程序,则还需要使用代码触发事件


.

如果您希望隐藏字段触发事件,那么我假设您需要编程解决方案(这是实现此目的的唯一方法)。下面是这样做的解决方案


const citySelector=document.querySelector(“#city_lat”);
citySelector.addEventListener('change',function(){
警报(“更改”);
});
citySelector.value=“更改的值”;
citySelector.dispatchEvent(新事件(“更改”)
您可以在值更改时使用触发事件:

在指定的
EventTarget
处调度
事件
,以适当的顺序(同步)调用受影响的
EventListeners
。正常事件处理规则(包括捕获和可选冒泡阶段)也适用于使用
dispatchEvent()
手动调度的事件

请尝试以下方法:

var citySelector=document.getElementById('city_lat');
citySelector.addEventListener('change',function(){
警报(“更改”);
});
citySelector.value='London';
citySelector.dispatchEvent(新事件(“更改”)

挑选
伦敦
纽约

您可以重新定义输入的value属性。然后观察变化:

var targetNode=document.getElementById('city_lat');
Object.defineProperty(targetNode,“值”{
设置:功能(t){
log('隐藏字段的值已更改!');
targetNode.setAttribute('value',t)
},
get:function(){
返回targetNode.getAttribute('value');
}
});
//测试。。。
setTimeout(函数(){
//将值更改为12
targetNode.value=“12”;
console.log(targetNode.value);
},2000);

当用户不输入某些内容时,将触发How on change事件,当您使用js或jquery进行修改时,不会触发该事件。
如果您提供您想要做的事情,有人会告诉您确切需要做什么。

请提供HTML,以便我们可以运行它并查看您描述的行为。只有当用户更改了输入,或者在代码中使用类似$(“#city_lat”)的东西触发onchange事件时,onchange事件的可能重复才会起作用。触发器('change')。用户无法更改隐藏的输入,因此默认情况下不会触发任何更改事件。的可能重复