2014-10-01 6 views
0

Я использую jsf 1.2, richfaces 3.3.3. Я написал javascript fuction и хочу использовать его как onclick на a4j: commandButton.JSF 1.2 + Javascript + AJAX

Функция:

function simpleFunction(){ 
    var x = document.getElementById('check').value; 
    if(x != null){ 
     alert("NOT NULL"); 
    } 
} 

Форма:

<h:form> 
     <h:inputText id="check" value="myvalue" style="display: none"/> 
     <h:outputText value="#{crossReferenceMsg.min3}" style="font-size: 11px; color:red; font-weight: bold"/><br/> 
     <h:outputLabel value="#{crossReferenceMsg.searchName}" for="tbSearchFilter" 
         style="font-size: 14px;font-weight: bold;"/> 
     <h:inputText id="tbSearchFilter" value="#{CrossReferenceBean.searchText}"> 
     </h:inputText> 
     <a4j:commandButton id="btnSearchCrossReference" 
          onclick="simpleFunction()" 
          action="#{CrossReferenceBean.search}" 
          value="#{crossReferenceMsg.search}" 
          reRender="dvFilters"/> 
     <rich:messages for="tbSearchFilter"/> 
     <rich:hotKey key="return" 
        handler="#{rich:element('btnSearchCrossReference')}.click()" 
        selector="#dvSearchCrossReference"/> 
    </h:form> 

Но это не работает - в GOOGLECHROME отладчика я могу видеть, что переменная х = не определено. Где я совершил ошибку?

ответ

0

добавить prependId="false" в ваш h:form.

В этом случае по умолчанию идентификатор формы (что-то вроде j_idt ..., который автоматически устанавливается jsf) добавляется ко всем идентификаторам компонентов, вложенным в вашу форму. поэтому ваш фактический h:inputText id не «проверяет». вы можете увидеть, что если вы проверите html-источник своей страницы.