问题描述
我正在使用Peter Kahrel的指南来动态创建用户界面,我想用键盘输入内容填充所选的Edittext。由于所有编辑文本都是动态创建的,因此如何检查选择了哪一个?我的函数在第一个字段上运行正常,但在下一个字段上运行不正常
var win = new Window ("dialog");
var maingroup = win.add ("panel {orientation: 'column'}");
add_row (maingroup);
var show_btn = win.add ("button",undefined,"Save presets");
show_btn.onClick = function () {
var txt = "";
for (var n = 0; n < maingroup.children.length; n++) {
txt += maingroup.children[n].edit.text + "\n";
}
alert ("Rows: \n" + txt);
}
win.show ();
function add_row (maingroup) {
var group = maingroup.add ("group");
group.statictext = group.add ("statictext","Left-click +");
group.edit = group.add ("edittext",["","",200,20],"Click here and press any key");
group.plus = group.add ("button","+");
group.plus.onClick = add_btn;
group.minus = group.add ("button","-");
group.minus.onClick = minus_btn;
group.index = maingroup.children.length - 1;
group.edit.onActivate = function(){
win.addEventListener ("keydown",function (kd) {pressed (kd)});
function pressed (k) {
if(k.keyName === "Enter"){
group.edit.text = "Enter";
}
}
}
win.layout.layout (true);
}
function add_btn () {
add_row (maingroup);
}
function minus_btn () {
maingroup.remove (this.parent);
win.layout.layout (true);
}
解决方法
如果您将事件侦听器添加到组而不是整个应用程序,则应该可以正常工作。
即。
win.addEventListener(“ keydown”,function(kd){pressed(kd)});
被替换为
group.addEventListener(“ keydown”,function(kd){pressed(kd)});