2015-06-15 30 views
1

我有一個primefaces輸入文本區域和一個primefaces按鈕。我只想在文本區域輸入任何值時才啓用該按鈕。Primefaces在輸入文本時啓用按鈕

<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();"/> 
+0

但它不是一個通常的模式。在提交時驗證表單。 – vels4j

回答

2
<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}" /> 

編輯(根據您的評論):

  • 嘗試添加全局= 「false」 表示不會觸發ajaxStatus <p:ajax event="keyup" global="false" update="saveButton" />。根據您的PrimeFaces版本,您可能需要刪除事件名稱,只寫<p:ajax global="false" update="saveButton" />
+0

嗨,感謝您接近答案,但我確實得到了加載ajax primefaces標誌總是任何方式,我可以阻止它出現? –

+0

我編輯了我的答案,請嘗試一下並給我一個反饋。 –

-2

這些問題似乎是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()" ... /> 

我希望這就是你要找的。

+1

嘗試自己並修復相應的答案。至少有2個錯誤/疏忽。 – BalusC

+0

@BalusC你可以給我一個提示。我剛剛測試了我的代碼,它工作正常。請參閱:http://jsfiddle.net/pL7ke8u7/ – QueryLars

+0

在JSF表單中使用JSF組件。然後提交表單。 – BalusC