【发布时间】:2012-04-18 13:12:30
【问题描述】:
我正在尝试制作一段道场代码,但遇到了一些困难。 其背后的意图是这样的:
1- 让 select 触发 onChange 事件,该事件通过 dojo.xhrGet 检索选项列表。 2- 让每个检索到的选项都有自己的 onclick 事件关联/绑定到它,并且它触发的函数需要 2 个参数
问题:此时,选项上的 onClick 事件会在通过 Ajax 检索到且未传递第一个参数时立即触发。之后事件停止触发(单击不会产生任何结果)。
提前感谢您的反馈。代码如下
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
【问题讨论】:
标签: javascript events dojo