我有一个简单的脚本标记,其中包含一个函数,我将其包含在html主体的底部.此脚本只是禁用提交按钮.然后我有一个onclick调用该函数的事件.
我在5个不同的页面中有这个代码,它适用于五个中的3个.
这是代码:
<!-- more non-important html -->
<h:commandButton id="buttonToDisable"
value="some text"
action="#{myBean.myBeansAction}"
actionListener="#{myBean.myBeansActionListener}"
onclick="disableButton()">
<!-- I also have an f:param in some of these pages but I didn't
think that would matter -->
</h:commandButton>
<!-- more non-important html -->
<script>
function disabledButton() {
document.getElementById("myForm:buttonToDisable").disabled = 'true';
}
</script>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.该做的,不工作的页面之间的唯一区别是,action和actionListeners不同类型的咖啡豆和一些有f:params和别人不一样.
当我在a4j:commandButton上包含'disabled'属性时,不执行按钮的操作.取消"禁用"属性会使其正常工作.我没有做任何特殊验证(我知道)并且没有看到任何验证错误消息.
这是我的页面的一部分:
<t:dataTable id="myTable"
var="region"
value="#{MyPageBackingBean.regions}"
width="100%">
...
<a4j:commandButton value="Update"
action="#{region.doUpdate}"
oncomplete="alert('done');"
disabled="#{!empty region && region.messageEmpty}"
immediate="true"/>
...
</t:dataTable>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
编辑:
我尝试在t:dataTable上设置preserveDataModel ="true"无效.
我还做了一个测试有一个a4j:commandButton和没有数据表的文本框,但仍然没有触发支持bean操作:
<h:form>
<a4j:region>
<a4j:outputPanel id="testregion">
<h:messages id="messages"/>
<a4j:status>
<f:facet name="start">
<h:graphicImage value="/images/progress_indicator.gif"/>
</f:facet>
</a4j:status>
<h:inputTextarea
rows="5"
value="#{MyPageBackingBean.myValue}"
style="width:100%; border: 1px solid #99CCFF;">
<a4j:support event="onkeyup"
reRender="testregion"
eventsQueue="messageModificationQueue"
ignoreDupResponses="true"
requestDelay="500"/>
</h:inputTextarea>
<a4j:commandButton id="doDelete"
value="Delete"
action="#{MyPageBackingBean.dummy}"
reRender="testregion"
disabled="#{empty MyPageBackingBean.myValue}"/>
<h:outputText value="#{MyPageBackingBean.myValue}"/>
</a4j:outputPanel>
</a4j:region>
</h:form>
Run Code Online (Sandbox Code Playgroud)
以下是用于测试的新支持bean代码:
private String m_myValue = null;
public String getMyValue()
{
return m_myValue;
}
public void setMyValue(String …Run Code Online (Sandbox Code Playgroud)