2014-04-16 1 views
0

a4j : ajax 구성 요소와 관련된 문제에 직면했습니다. oncomplete 함수에서 부모 구성 요소의 ID를 얻으려면 어떻게합니까?a4j : ajax oncomplete에서 어떻게 id를 얻을 수 있습니까?

나는 rich : dataTable을 가지고 있고 모든 열은 ajax listener로 inputText이며, Ajax 유효성 검사가 false를 반환하면 해당 필드에 초점을두고 배경을 빨간색으로 변경해야합니다. 불행히도 태그에서 특정 inputText의 ID를 얻는 방법을 모르겠습니다. 아래 코드는 내가 할 일을 알려주지 만 구성 요소의 ID는 정의되지 않습니다.

<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(); 
} 

어떤 도움이 좋을 것 나는

코드입니다 ... 아약스 작동하지 InputText]를의 ID는이 때문에 추측! 사전에 감사드립니다 ....

답변

0

음, 입력에 ID를 부여하고 사용하십시오. fullIds가 다를 수 있기 때문에

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

지금, 당신이 이런 식으로 뭔가를해야합니다 :

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

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

감사합니다, 그것은 아마 작동합니다 ...하지만 여러 5,6 입력이 경우 어떤 행당? –

+0

그런 경우에는 빈에서 ID를 결정한 다음 검색해야 할 수도 있습니다. 이를 위해'data' 속성을 사용할 수 있습니다. – Makhiel

관련 문제