计算p:inputTextarea中使用的字符而不是剩余的字符

时间:2017-04-27 18:40:56

标签: javascript jquery primefaces

我之前发布了一个类似的问题,但我正在寻找一种不同的方法。我有一个inputTextArea,我需要限制可以输入的字符数量以及显示使用的字符数量(例如:"使用31/50字符和#34;)。目前,我只是使用inputTextArea的属性来执行此操作,但是,这样,我只能计算剩余的字符数。下面是inputTextArea的图片以及执行此操作的代码。

Characters Remaining counter

<p:inputTextarea id="ogdGacOther" rows="1" style="vertical-align: top; width: 98% !important;" styleClass="preformatted" autoResize="false" value="#{rfeBean.rfe.targetOfficerReasonsForReferral.otherOgdGac}" disabled="#{!rfeBean.ogdGacReferralReasonsChecked[ReferralTemplateConstants.OGD_GAC_OTHER] or !raudUserSessionBean.raudUser.referMode or rfeBean.workItemMissing}"
  counter="displayGacCharCount" maxlength="50" counterTemplate="{0} #{msg.rfeCharactersRemaining}">
  <p:ajax event="change" process="@this" />
</p:inputTextarea>
<br/>
<h:outputText id="displayGacCharCount" />

我想知道是否有办法修改它以便显示使用的字符。计数器模板中的{0}是表示剩余字符数的数字。如果有人知道我可以使用{0}调用java方法的方法,我会很高兴。无论哪种方式,让我知道你认为最好的方法。我试图避免使用jQuery的任何javascript。

我试过这样的事情:

<h:outputText id="displayGacCharCount" value="#{rfeBean.methodToChangeCharRemainToCharUsed(valueForCharRemain({0})}" />

当我尝试这个时,我得到的错误是&#34; El Expression是不平衡的&#34;

1 个答案:

答案 0 :(得分:-1)

利安,

这很简单,忘记计数器并获得字符串长度:

<p:inputTextarea id="ogdGacOther" rows="1" maxlength="50"
              value="#{rfeBean.rfe.targetOfficerReasonsForReferral.otherOgdGac}">
    <p:ajax event="keyup" update="displayGacCharCount" global="false"/>
    <p:ajax event="keydown" update="displayGacCharCount" global="false"/>
    <p:ajax event="keypress" update="displayGacCharCount" global="false"/>
</p:inputTextarea>

<h:outputText id="displayGacCharCount" 
           value="#{rfeBean.rfe.targetOfficerReasonsForReferral.otherOgdGac.length()}"/>