【发布时间】:2017-04-07 15:46:35
【问题描述】:
只是一个简单的js sn-p:
HTML:
<input type="text" id="t1">
<input type="text" id="t2">
JAVASCRIPT:
var t1 = document.getElementById('t1');
var t2 = document.getElementById('t2');
t1.addEventListener('keyup', function () {
t2.value = t1.value.toUpperCase();
});
t2.addEventListener('change propertychange input', function () {
alert('dd');
});
如您所见,t2 的更改事件从未触发!这很简单,不需要更多的描述。在“Chrome 版本 56.0.2924.87(64 位)”和“Firefox 52.0(32 位)”中测试。有人知道吗?
更新:
关于t2.addEventListener应该是这样的:
t2.addEventListener('change', function () {
alert('dd');
});
或
$("#t2").on('change propertychange input',function(){
// do something here......
});
再次更新:
实际上,没有 t1 键入或更改事件。我只是将其用作示例。我唯一想要的是我需要知道 t2 的值何时被另一个函数改变。所以,我认为我们应该关注 t2,而不是 t1。
更新三:
我相信你们之前都使用过 Google 自动填充功能。有些 sn-p 喜欢这样:
autocomplete = new google.maps.places.Autocomplete(
// .......
);
autocomplete.addListener('place_changed', fillInAddress);
function fillInAddress(){
t2.val(......);
}
但是,问题是,我不想将触发器放在“fillInAddress”中,而是想在 t2 上的 addEventListener 或 on('change') 中捕获这个更改的事件,就像我之前写的那样...... .
最终更新:
仍然无法弄清楚为什么无法触发 t2 'change' 事件。但是,我在 t1 中放入了一些东西,就像@Kind 用户所做的那样,问题就解决了。如果有人有任何想法,我非常感谢您与我分享!
【问题讨论】:
标签: javascript addeventlistener