Oracle APEX - выдача доступа к элементу управления html из условия DA - PullRequest
0 голосов
/ 30 марта 2020

У меня есть пользовательский DA, который вызывается, когда выражение JavaScript является документом, и я хочу, чтобы оно выполнялось только при соблюдении определенного c условия на стороне клиента.

Итак, я установил на стороне клиента условие javascript выражение:

document.getElementById("myfield").options[status.selectedIndex].text != "Closed"

Проблема в том, что myfield не элемент страницы, а элемент управления html - поле выбора. Поэтому я должен использовать выражение javascript вместо Item != Value.

Теперь, когда я запускаю страницу и пытаюсь выполнить действие, которое активирует мой DA, условие проверяется, и оно выдает ошибку, говоря Cannot read property 'text' of undefined. Как мне изменить выражение javaScript, чтобы оно заработало?

1 Ответ

1 голос
/ 30 марта 2020

В APEX $x является краткой ссылкой / указателем на document.getElementById, поэтому вы должны иметь возможность сделать это:

$x("myfield").options[$x("myfield").selectedIndex].text != "Closed"

При использовании выражения JavaScript, если вам нужно сделать это больше, чем просто базовое выражение c, вы можете использовать выражение «Немедленно вызванная функция», чтобы разбить логи c. Вот пример:

(function(){
  var select = $x('page-item-id');

  if (select.selectedIndex === -1) {
    return false;
  }

  return select.options[select.selectedIndex].text != 'Closed'; 
})()

Кроме того, вы можете объявить функцию в атрибуте Объявление функции и глобальной переменной страницы, а затем вызвать ее как выражение в Условии DA .

...