9

我在 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>

该链接在使用以下函数更新 select 的选定值时起作用。

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 没有被触发或引发错误。我的第一个想法是它与监听 onChange 的 dojo.Connect 有关,但我没有找到任何说明我不能这样做的信息,也没有任何解释如何解决它。

有任何想法吗?

4

3 回答 3

14

选择 onchange 不会触发程序更改,您需要自己触发它league.onchange();

正如@Greg 所指出的,调用应该是小写的。

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

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

于 2012-10-18T16:06:59.817 回答
1

您是否尝试过使用普通 js 通过它的 id 调用选择?

document.getElementById('league').onchange.call();
于 2012-10-18T16:32:24.873 回答
0

正如其他人所说,您需要自己触发事件,仅设置值不会这样做。请参阅如何在 JavaScript 中触发事件的代码?以跨浏览器的方式查看。

于 2012-10-18T16:39:24.277 回答