Определить, какой текст редактирования пользовательского интерфейса активирован

#javascript #adobe #extendscript

#javascript #саман #расширенный скрипт #adobe #extendscript

Вопрос:

Я использую руководство Питера Карела по динамическому созданию пользовательского интерфейса, и я хочу заполнить выбранный текст редактирования вводом с клавиатуры. Поскольку все тексты редактирования создаются на лету, как мне проверить, какой из них выбран? Моя функция отлично работает в первом, но не в следующем поле

 
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", undefined, "Left-click   ");
group.edit = group.add ("edittext", ["", "", 200, 20], "Click here and press any key");
group.plus = group.add ("button", undefined, " ");
group.plus.onClick = add_btn;
group.minus = group.add ("button", undefined, "-");
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);
}
  

Ответ №1:

Это должно сработать, если вы добавите прослушиватель событий в группу, а не во все приложение.

ie.

win.addEventListener («нажатие клавиши», функция (kd) {нажата (kd)});

заменяется на

group.addEventListener («нажатие клавиши», функция (kd) {нажата (kd)});

Комментарии:

1. Я заметил, что через 10 минут после публикации вопроса. Извините за ошибку новичков. Спасибо!