后以编程方式更改HTML选择下拉列表的onchange不会火(onchange wont fire

2019-09-24 07:12发布

我有一个选择HTML里面

<select id="league" name="league">

我在听我的JavaScript内的变化。

var league = dojo.byId("league");
dojo.connect(league, "onchange", function (evt) { //do stuff }

工作正常。 但是我有一个链接,我可以点击该更新的选择:

<a href=javascript:void(0) onclick="updateSelection(league);"> League </a>

作品链接,因为它更新选择具有以下功能选择的值。

function updateSelection(NewLeague){
dojo.byId('league').value = NewLeague;  // works
dojo.byId('league').onChange;   //this isnt working
//dojo.byId('league').onChange();  //this throws: TypeError: dojo.byId("league").onChange is not a function 
}

我的问题,我已经通过其他堆栈帖子阅读是编程更新值不会触发的onChange,所以我需要在代码中调用平变化(如上图所示)。 按照行内的意见,是的onChange未触发或引发错误。 我首先想到的是它有事情做与监听的onChange的dojo.Connect,但我还没有发现,说我不能做到这一点的任何信息,也没有任何解释如何解决它。

有任何想法吗?

Answer 1:

选择的onchange不火programattic变化,你需要自己用火它league.onchange();

正如@格雷格指出,呼叫应该是小写。

另外,我不知道是否道场有一个触发方式,但是在jQuery的,这将完成为jQuery('#league').trigger('change')

根据您的道场的版本,您可能还需要检查: http://dojotoolkit.org/reference-guide/1.8/dojo/connect.html



Answer 2:

你试过打电话只是选择利用正常的js它的id?

document.getElementById('league').onchange.call();


Answer 3:

正如其他人所说,你需要自己触发事件,只需设置值没有做到这一点。 查看代码如何在JavaScript触发事件? 来看看如何在跨浏览器的方式。



文章来源: onchange wont fire after programmatically changing html select dropdown