我有一个素数输入文本区域和一个素数按钮。我希望仅在文本区域中输入任何值时才启用该按钮。
<p:inputTextarea id="dumpnotes" rows="10" cols="90" value="#{postProcessedDump.keyedinContent}" style="color: #000000" styleClass="inputarea" />
<p:commandButton value="Save" actionListener="#{dumpController.saveDumpNotesContent}" update="dumpnotes" oncomplete="PF('dumpNotesSaveSuccessDialog').show();"/>
<p:inputTextarea id="dumpnotes" rows="10" cols="90" value="#{postProcessedDump.keyedinContent}" style="color: #000000" styleClass="inputarea">
<p:ajax event="keyup" update="saveButton" />
</p:inputTextarea>
<p:commandButton id="saveButton" value="Save" actionListener="#{dumpController.saveDumpNotesContent}" update="dumpnotes" oncomplete="PF('dumpNotesSaveSuccessDialog').show();" disabled="#{empty postProcessedDump.keyedinContent}" />
编辑(根据您的评论):
- 尝试添加 global="false" 以不触发 ajaxStatus
<p:ajax event="keyup" global="false" update="saveButton" />
。根据您的PrimeFaces版本,您可能需要删除事件名称并仅写入<p:ajax global="false" update="saveButton" />
这些问题似乎与JavaScript相当相关,所以我会尝试以下方法。
首先,我将定义一个JavaScript函数来检查是否启用commandButton
:
function validateInput() {
if(document.getElementById('dumpnotes').value == '') {
document.getElementById('button').disabled = true;
} else {
document.getElementById('button').disabled = false;
}
}
所以你只需要给commandButton
一个id(例如 id="button"
),并在inputTextarea
中使用onkeyup
事件,如下所示:
<p:inputTextarea id="dumpnotes" onkeyup="validateInput()" ... />
我希望这就是你要找的。