Javascript addEventListener似乎不适用于更改事件
只是一个简单的js代码片段: HTML: 如您所见,t2的更改事件从未触发!这很简单,不需要更多的描述。在“Chrome版本56.0.2924.87(64位)”和“Firefox 52.0(32位)”中测试。有人知道吗 更新: 关于t2,应该是这样的。addEventListener:Javascript addEventListener似乎不适用于更改事件,javascript,addeventlistener,Javascript,Addeventlistener,只是一个简单的js代码片段: HTML: 如您所见,t2的更改事件从未触发!这很简单,不需要更多的描述。在“Chrome版本56.0.2924.87(64位)”和“Firefox 52.0(32位)”中测试。有人知道吗 更新: 关于t2,应该是这样的。addEventListener: t2.addEventListener('change', function () { alert('dd'); }); 或 再次更新: 实际上,没有t1类型或更改事件。我用这个只是为了一个样本。我只想
t2.addEventListener('change', function () {
alert('dd');
});
或
再次更新:
实际上,没有t1类型或更改事件。我用这个只是为了一个样本。我只想知道t2的值何时被其他函数改变。所以,我认为我们应该关注t2,而不是t1
更新三:
我相信你们以前都用过谷歌自动完成。有些片段如下所示:
autocomplete = new google.maps.places.Autocomplete(
// .......
);
autocomplete.addListener('place_changed', fillInAddress);
function fillInAddress(){
t2.val(......);
}
但是,问题是,我不想把触发器放在'fillInAddress'中,相反,我想在addEventListener或t2上的('change')中捕获这个已更改的事件,就像我以前写的那样
最后更新:
仍然无法理解为什么t2“更改”事件无法触发。然而,我在t1中加入了一些东西,就像@Kind user所做的一样,问题得到了解决。如果有人有任何想法,我非常感谢你能与我分享 老实说,我敢打赌,如果
t2
输入值的变化是由t1
输入的变化引起的,OP实际上希望警报
触发
注意:目前,这是一个jQuery
解决方案
$('#t1')。on('keyup',function(){
$('#t2').val($(this.val().toUpperCase()).change();
});
$('#t2')。on('change',function(){
警报(“dd”);
});代码>
谢谢,你就快到了!唯一不同的是,实际上我们没有可以使用的t1类型或更改事件。我用这个只是为了一个样本。但是是的,就像你说的,我唯一想要的是我需要知道t2的值什么时候被另一个函数改变。现在我希望它能让我撤销对另一个答案的投票。这是正确的答案@Jackzhao,只要使用.val
更新值,它就应该按预期工作。@Jackzhao:“就像你说的,我唯一想要的是我需要知道t2的值何时被其他函数更改”,这完全改变了你的问题。您的问题没有说您想检测代码所做的更改。通常由其他代码更改,或者特别是在t1
的事件处理程序更改它时更改?以上内容将适用于后者(尽管我建议不要通过合成事件这样做),但不适用于前者。@T.J.Crowder TJ,如果您能提供关于OP问题的纯js解决方案,我愿意立即投票支持您的答案。@T.J.Crowder您是对的,没想那么多,我的错!但我仍然被困在这里…复制品。我已经发了一封邮件。
t2.addEventListener('change', function () {
alert('dd');
});
$("#t2").on('change propertychange input',function(){
// do something here......
});
autocomplete = new google.maps.places.Autocomplete(
// .......
);
autocomplete.addListener('place_changed', fillInAddress);
function fillInAddress(){
t2.val(......);
}