我使用jsf 1.2,richfaces 3.3.3。我已经编写了javascript函数,并想在on4j:commandButton上使用它。
功能:
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调试器中我可以看到,变量x = undefined。我在哪里弄错了?
答案 0 :(得分:0)
将prependId="false"
添加到您的h:form
。
在这种情况下,默认情况下,表单id(类似于j_idt ...,由jsf自动设置)将预先嵌入到表单中嵌套的所有组件ID。所以你的实际h:inputText
ID不是“检查”。你可以看到,如果你检查你的页面的html源。