我試圖做一塊dojo代碼工作,並有一點點的困難時間。 它背後的意圖是這樣的:嘗試創建/綁定onClick事件到<option>通過dojo.xhrGet請求生成
1-有一個選擇火災的onChange事件,通過dojo.xhrGet檢索選項列表。 2-讓每個檢索到的選項都獲得與其關聯/綁定的onclick事件,並且它觸發的功能需要2個參數
問題:此時,選項上的onClick事件一觸發通過Ajax檢索並且不通過firt參數。此後事件停止發射(點擊不產生任何東西)。
感謝您提前提供反饋。代碼如下
JS
function checkAvailable(i){
var id_prog = 'programa_'+i;
var id_coreo = 'coreografia_'+i;
var prog = dojo.byId(id_prog).value;
dojo.xhrGet({
url:"ajaxCoreo.php",
handleAs:"text",
content: {
programa: prog,
item: i
},
load: function(data){
var targetNode = dojo.byId(id_coreo);
dojo.place(data,targetNode,"only");
dojo.byId(id_coreo).disabled = false;
var callback = function(evt){
var j = evt.target.innerHTML;
checkPack(j,i);
console.log('write me if you fire inside first function');
};
dojo.query("#coreografia_1>option").connect('click', callback);
setValor(i);
}
});
}
function checkPack(j,i){
console.log('write me if you fire inside second function');
console.log(j);
console.log(i);
var num = j;
var id_prog = 'programa_'+i;
var id_coreo = 'coreografia_'+j;
var prog = dojo.byId(id_prog).value;
dojo.xhrGet({
url:"ajaxPack.php",
handleAs:"text",
content: {
programa: prog,
coreo: j
},
load: function(data){
if(data=="true"){
dojo.query("option[value="+num+"]").forEach(dojo.destroy);
alert('O Pack escolhido já foi encomendado previamente.');
setValor(i);
}
}
});
}
HTML
<select name="programa[]" id="programa_1" onChange="checkAvailable(1)" title="obrigatorio">
<option value="0">Choose your program</option>
</select>
<select name="coreografia_1" id="coreografia_1" disabled="disabled" title="obrigatorio">
<option value="0" selected="selected">Escolha Um Programa</option> //this is the node that is populated by the first xhrGet call
</select>
編輯:我編輯的代碼,以反映更改,並添加HTML
這工作來解決這個問題的一部分。現在的問題是Chrome。它適用於FF,但Chrome從不觸發註冊的checkPack功能。控制檯上也沒有。謝謝您的回答! – RedRazor 2012-04-19 08:49:03
腳本適用於FF和IE9。不適用於Chrome,Safari和IE 9以下。通過工作,我的意思是,它會觸發第一個xhrGet函數,檢索並填充所需的內容,我相信(通過檢查DOM)它確實註冊了與每個
你能否粘貼html ?. – Jmsegrev 2012-04-19 11:50:45