我似乎無法正確地將onchange事件附加到dijit.form.Select小部件。然而,我對網絡開發並不熟悉,所以我可能會做一些完全愚蠢的事情(儘管我儘可能說明了這一點(並且我已經閱讀了所有可以找到的文檔)。我確定body類匹配dojo主題,我爲我使用的所有小部件(和dojo.parser)dojo.require(),並且仍然是nada。我使用的代碼是:我不能上onChange for dijit.form.Select
dojo.addOnLoad(function() {
var _query = dojo.query('.toggle');
for (var i in _query) {
dojo.connect(_query[i], 'onchange', function (ev) {
console.log(ev + ' fired onchange');
});
}
});
任何幫助都將不勝感激。另外:在深入瞭解dijit呈現小部件的內幕之後,我發現,當我將dojoType ='dijit.form.Select'屬性值對添加到我的html元素(以聲明方式執行此操作)時,實際上dijit呈現一行兩列表格。該表的第一個元素是一個跨度(使用類dijitSelectLabel),我假設只顯示選定的(或默認)元素。它的第二個元素似乎是一個按鈕,呈現爲一個向下箭頭,用於響應某些DOM事件來切換菜單的顯示。另外(我認爲這很漂亮),dijit實際上並沒有將選擇選項放在DOM樹中,直到其中一個事件被觸發。我在新的頁面加載之後(在我點擊任何內容之前)查看了螢火蟲中的HTML,並且第二個選項不在任何地方。然後,一旦我點擊箭頭按鈕,就會出現一個dijit.Menu小部件,dijit將dijit.Menu粘貼到body節點的末尾;當我點擊其他地方後,Menu小部件仍然是body的lastChild,現在它只是隱藏並且不附加到form.Select小部件。
如果我只想在DOM樹中放置一個不同的dijit.form小部件,這取決於用戶選擇哪個項目,是否應該真的如此複雜?
結論: 原來這是一個大寫字母問題。
dojo.connect(widget_obj, 'onChange', function_obj);
作品,而
dojo.connect(widget_obj, 'onchange', function_obj);
沒有。
所以我說得對,我當時完全傻了。我認爲,因爲全部小寫版本在將html標籤放置爲屬性時起作用,Dojo會將其視爲相同。這很有意義,因爲dijit.form.Select沒有.onchange屬性,但確實有.onChange屬性。 (我最終堅持選擇.FilteringSelect,因爲我沒有給我的用戶任何印象,他們可以鍵入某些東西。)所以,你們哪一個我給出了答案(因爲你們兩個在你的帖子中有變化,我想我太缺乏經驗,無法認識到案件的重要性)?
我嘗試了dijit.byId(nodeId)和dijit.byNode(節點),兩種方法都沒有奏效。 – yarmiganosca 2010-04-01 20:03:47