PrimeFaces InputExtArea计数器模板中已用字符数和总字符数

PrimeFaces InputExtArea计数器模板中已用字符数和总字符数,primefaces,Primefaces,我有一个关于素面的问题。我有一个文本框,我需要该文本框中的字符限制以及给出当前字符状态的输出文本 当前,我的计数器如下所示: 我更喜欢向上计数,而不是向下计数。更像是“使用了32/50个字符” 下面是我为实现这一点所做的代码: 我有办法做到这一点。表示剩余字符数的变量用R表示。使用的字符数用U表示。 我需要这样做:U=(C-50)*(-1) 我只是不知道如何在素数面上做那样的代数。我认为使用PF计数器是不可能的。。。如果你想回到jQuery,这对我很有用: <p:inputText

我有一个关于素面的问题。我有一个文本框,我需要该文本框中的字符限制以及给出当前字符状态的输出文本

当前,我的计数器如下所示:

我更喜欢向上计数,而不是向下计数。更像是“使用了32/50个字符”

下面是我为实现这一点所做的代码:



我有办法做到这一点。表示剩余字符数的变量用R表示。使用的字符数用U表示。
我需要这样做:U=(C-50)*(-1)


我只是不知道如何在素数面上做那样的代数。

我认为使用PF计数器是不可能的。。。如果你想回到jQuery,这对我很有用:

<p:inputTextarea id="textarea" maxlength="20" onfocus="updateCount()" onkeyup="updateCount()"/>
<div id="counter"/>


函数updateCount(){
$(“[id$='counter']”)html($(“[id$='textarea']”)val().length+“/”+$(“[id$='textarea']”)attr('maxlength')+”使用的字符);
}

这可以通过简单地覆盖小部件来完成:

替换

var remainingText = this.cfg.counterTemplate.replace('{0}', remaining);

将为您提供使用长度使用{1}和配置的最大长度使用{2}的选项

计数器模板的一个例子是

"This textArea has used {1} of {2} characters, so {0} are remaining"
因此,全功能覆盖变为

PrimeFaces.widget.InputTextarea.prototype.updateCounter = function() {
    var value = this.normalizeNewlines(this.jq.val()),
    length = value.length;

    if(this.counter) {
        var remaining = this.cfg.maxlength - length;
        if(remaining < 0) {
            remaining = 0;
        }

        var remainingText = this.cfg.counterTemplate.replace('{0}', remaining).replace('{1}', length).replace('2', this.cfg.maxlength);

        this.counter.html(remainingText);
    }
}
PrimeFaces.widget.InputTextarea.prototype.updateCounter=function(){
var value=this.normalizeNewlines(this.jq.val()),
长度=value.length;
如果(此计数器){
var剩余=this.cfg.maxlength-长度;
如果(剩余<0){
剩余=0;
}
var remainingText=this.cfg.counterTemplate.replace('{0}',剩余)。replace('{1}',length)。replace('2',this.cfg.maxlength);
this.counter.html(remainingText);
}
}
将其包含在正确的位置以覆盖现有的位置,它将起作用


所以很容易使用源代码找到解决方案…

这是“可能的”,请参阅我的答案,但我还是对这个答案投了赞成票;-)好奇OP会接受哪个答案。在这一次之后他有两次尝试。。。怪异+1。我认为值得在Git上发行一期。这样就不需要创建变通方法或硬编码来显示最大长度了。@JasperDeVries:将在本周内完成此操作如何。。。我想我发现有人投了反对票,在同一张海报上的另外两个几乎相同的问题上给出了一个糟糕的答案(我投了反对票)。。。酷!!!新增功能请求:
"This textArea has used {1} of {2} characters, so {0} are remaining"
PrimeFaces.widget.InputTextarea.prototype.updateCounter = function() {
    var value = this.normalizeNewlines(this.jq.val()),
    length = value.length;

    if(this.counter) {
        var remaining = this.cfg.maxlength - length;
        if(remaining < 0) {
            remaining = 0;
        }

        var remainingText = this.cfg.counterTemplate.replace('{0}', remaining).replace('{1}', length).replace('2', this.cfg.maxlength);

        this.counter.html(remainingText);
    }
}