我如何在a4j中获取id:ajax oncomplete?

时间:2014-04-16 08:43:41

标签: ajax jsf richfaces ajax4jsf

我遇到过a4j:ajax组件的问题。如何在oncomplete函数中获取父组件的id?

我有富:dataTable,所有列都是带有ajax监听器的inputText,我需要做的是当ajax验证返回false时,我需要关注该字段并将背景更改为红色。不幸的是,我不知道如何从标签中获取特定inputText的Id。下面的代码告诉我要做什么,但组件的id是未定义的。我想因为这是ajax函数的id而不是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();
}

任何帮助都会很棒!提前谢谢....

1 个答案:

答案 0 :(得分:0)

好吧,给输入一个id并使用它。

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

现在,由于fullIds看起来不同,你需要做这样的事情:

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

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