在以编程方式更改html选择下拉列表后,onchange不会触发

KHi*_*bma 6 html javascript dojo

我有一个内部选择HTML

<select id="league" name="league">
Run Code Online (Sandbox Code Playgroud)

我正在听我的javascript里面的变化.

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

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

<a href=javascript:void(0) onclick="updateSelection(league);"> League </a>
Run Code Online (Sandbox Code Playgroud)

链接工作,因为它使用以下函数更新选择的选定值.

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 
}
Run Code Online (Sandbox Code Playgroud)

我的问题,正如我通过其他堆栈帖子阅读的那样,以编程方式更新值不会触发onChange,因此我需要在代码中调用onchange(如上所示).根据内联注释,onChange未被触发或抛出错误.我首先想到的是它与侦听onChange的dojo.Connect有关,但我没有发现任何信息说我不能这样做,也没有任何解释如何解决它.

有任何想法吗?

Bob*_*ies 11

选择onchange不会因为编程变化而触发,你需要自己解决它 league.onchange();

正如@Greg所说,调用应该是小写的.

另外,我不知道dojo是否有触发器方法,但在jQuery中,这将完成jQuery('#league').trigger('change').

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