получить значение inputText на лету без поддержки бина? - PullRequest
1 голос
/ 20 февраля 2012

можно ли получить значение inputTextare на лету без поддержки bean-компонента?

<p:dialog>
<p:inputTextarea rows="5" cols="30" value="#{_var.note}" />
<h:outputText id="remaining" value="#{util.getCharactersRemaining("varibale of textarea", 160)} characters left" />



public class UtilFacade {
    public int getCharactersRemaining(String value, int maxLength) {
        log.info("length: " + value.length());
        return (maxLength - value.length());
    }
}

Чтобы отобразить оставшиеся символы в диалоговом окне, я должен передать метод с текущим значением в Textarea безсохранение значения в бобе поддержкиКак я могу получить это значение?

1 Ответ

4 голосов
/ 20 февраля 2012

Вы можете сделать это с помощью метода JavaScript (не нужно переходить на сервер).Вот пример:

<script type="text/javascript">
    function getRemainingChars(textArea, maxLength) {
        var actualText = textArea.value;
        if (actualText.length > maxLength) {
            textArea.value = actualText.substring(0, maxLength);
        }
        var remainingChars = (maxLength > actualText.length) ? maxLength - actualText.length : 0;
        document.getElementById("frmMyPage:txtRemainingChars").value = remainingChars;
    }
</script>
<h:form id="frmMyPage">
<h:inputTextArea id="txtTextArea" cols="50" rows="10" onkeyup="getRemainingChars(this, 500);" />
<br />
<h:outputText id="txtRemainingChars" />
</h:form>

Вы можете получить более подробную информацию о keydown, keypress и keyup функциях javascript здесь (в этом случае я предпочитаю проверить текстна событие keyup).Также вы можете изменить функцию JavaScript и отправить идентификатор вашего компонента вместо отправки всего компонента (это сделает JS доступным для компонента inputText и аналогичных ему).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...