Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как я получу идентификатор в a4j: ajax по завершении?

Автор вопроса: code_prettyОтветов: 1

Я столкнулся с проблемой с компонентом a4j:ajax. Как получить идентификатор родительского компонента в функции oncomplete?

У меня есть rich:dataTable и весь столбец inputText с прослушивателем ajax, что мне нужно сделать, так это когда проверка ajax возвращает false, тогда мне нужно сосредоточиться на этом поле и изменить фон на красный. К сожалению, я не знаю, как получить идентификатор конкретного inputText из тегов. В приведенном ниже коде указано, что я собираюсь сделать, но идентификатор компонента не определен. Я думаю, из-за этого идентификатор функции ajax не inputText...

Это код:

<h:inputText value= "#{resultsTableRow[valueOfField]}" >
    <a4j:ajax event="blur" exceute="@form" render="submitManualsButton"
    listener="#{bean.theActionListener(resultsTableRow.identifier , columnDBName)}"
    oncomplete=" if (#{bean.validationResult}) #{rich:component('validationPopup')}.show();

   setFocusOnElement(this.id); // <----- that is crucial


   return false;" />
</h:inputText>

И js-функция:

function setFocusOnElement( element)
{
   $(resolveId(id)).focus();
}

Любая помощь будет здорово! Заранее спасибо....

ajaxjsfrichfacesajax4jsf

Ответы

Ответ 1 · Makhiel

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

<h:inputText id="input" ...>
    ...
    setFocusOnElement("input");

Теперь, поскольку полные идентификаторы выглядят по-другому, вам нужно сделать что-то вроде этого:

<rich:dataTable rowKeyVar="rk" ...>
    ...
    <h:inputText id="input#{rk}" ...>
        ...
        setFocusOnElement("input#{rk}");

function setFocusOnElement(id)
{
    $('[id$=' + id + ']').focus();
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы