2017-04-05 57 views
2

工作只是一个简单的JS代码片段:的addEventListener不会出现变革事件

HTML:

​​

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的change事件!这很简单,不需要更多的描述。在“Chrome版本56.0.2924.87(64位)”和“Firefox 52.0(32位)”中进行测试。有人有什么主意吗?

UPDATE:

它应该是这样的约t2.addEventListener:

t2.addEventListener('change', function() { 
    alert('dd'); 
}); 

OR

$("#t2").on('change propertychange input',function(){ 
    // do something here...... 
}); 

再次更新:

其实,没有T1或打字改变事件。我只是为了一个例子。我唯一想要的是我需要知道t2的值何时被另一个函数改变。所以,我认为我们应该关注t2,而不是t1。

更新三:

我相信所有的你们之前使用谷歌的自动完成。一些片断喜欢这样的:

autocomplete = new google.maps.places.Autocomplete(
    // ....... 
); 
autocomplete.addListener('place_changed', fillInAddress); 

function fillInAddress(){ 
    t2.val(......); 
} 

但是,事情是,我不希望把触发东西“fillInAddress”,相反,我要上捕获的addEventListener这个变化的事件或(“变化”) T2,就像我之前写的...

最后更新:

还是想不通为什么T2“变”事件不能被触发。但是,我像@Kind用户那样在t1中添加了一些东西,并解决了问题。如果有人有任何想法,我很感激,如果你愿意与我分享!

+0

的重复[*什么是当输入值由JavaScript变更了活动*](http://stackoverflow.com/questions/42427606/what-is-the-event-when - 输入值改变的逐的JavaScript)。我发布了[答案](http://stackoverflow.com/a/43272514/157247)。 –

回答

2

我认为,如果t2输入值更改是由t1输入更改引起的,OP实际上希望alert发射。

注意:这一刻,这是一个jQuery解决方案。

$('#t1').on('keyup', function() { 
 
    $('#t2').val($(this).val().toUpperCase()).change(); 
 
}); 
 

 
$('#t2').on('change', function() { 
 
    alert('dd'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="t1"> 
 
<input type="text" id="t2">

+0

谢谢,你快到了!唯一不同的是实际上没有我们可以使用的t1打字或改变事件。我只是为了一个例子。但是,是的,就像你说的,我想要的唯一的事情是我需要知道t2的值何时由另一个函数改变。 – Jack

+1

好吧,现在我希望它能让我撤消对其他答案的赞同。这是正确的答案。 @Jackzhao只要用'更新值。val'或[你手动触发事件](http://stackoverflow.com/questions/16250464/trigger-change-event-when-the-input-value-changed-programatically),那么它应该按预期工作。 –

+0

@Jackzhao:*“就像你说的,我想要的唯一的东西是我需要知道什么时候t2的值被另一个函数改变了”*这完全改变了你的问题。你的问题并没有说你想要通过代码**来检测**所做的更改。通常由其他代码改变*,或者特别是当t1的事件处理程序改变它时?上面将做后者(尽管我会建议不要那样做,通过综合事件),但不是前者。 –