jquery 堆栈溢出是如何实现字符计数器显示还剩xyz个字符的?

carvr3hs  于 2022-12-12  发布在  jQuery
关注(0)|答案(6)|浏览(104)

堆栈溢出如何做字符计数器说xyz字符左?

osh3o9ms

osh3o9ms1#

可能类似于(使用jQuery):

$('#txtbox').keypress(function() {
    var max = 500;
    var textLen = $(this).val().length;
    var textLeft = max - textLen;
    $('#charCount').text(
        textLeft + ' character' + (textLeft == 1 ? '' : 's') + ' left'
    );
});

(我知道不去看他们是怎么做的是很懒的,但这里有一个工作示例:(第10页)

xwmevbvl

xwmevbvl2#

于飞:

<textarea id="text" onkeyup="charCount(this);"></textarea>
<span id="chars"></span>

JS:

var maxChars = 500;
function charCount(el) {
   document.getElementById('chars').innerText = maxChars - this.value.length;
}

没有经过测试,但这是最基本的

esbemjvw

esbemjvw3#

这可以通过几种方式来实现,但这里有一个链接到一些简单的源代码。唯一确定的方法是了解SO是如何实现的,那就是查看压缩的javascript。
http://javascript.internet.com/forms/character-counter.html

2eafrhcq

2eafrhcq4#

在我的一个网站上看看这个页面http://www.bestvaluesolicitors.com/contact-us
偷看一下JS --你要找的这个函数:
function ml(id,max,repeat){if($F(id).length>max){$(id).value=$F(id).substring(0,max);}$(id).next('div').update($F(id).length+' / '+max+' characters');if(repeat==true){setTimeout('ml("'+id+'",'+max+','+repeat+')',500);}}
本质上,它是一个计时器和计算textarea中文本长度的组合。

ej83mcc0

ej83mcc05#

大概是这样的:
变量最大值= 1000;

document.getElementById('freddy').onkeypress =
document.getElementById('freddy').onkeyup = 
document.getElementById('freddy').onkeydown = function(){
    var count = this.value.length;
    if(max < count){
        this.value = this.value.substring(0,999);
        return false;
    }
    setTimeout(function(){
        document.getElementById('susan').innerHTML =
          (max-count)+' characters left!';
    },1);
};

http://jsfiddle.net/Paulpro/S4Dtu/

b4qexyjb

b4qexyjb6#

下面是StackExchange的charCounter()方法的定义,它有点模糊,但是如果你仔细研究它,你可以找到它的逻辑:

charCounter: function(c) {
    return this.each(function() {
        var d = $(this).parents("form").find("span.text-counter");
        var e = this;
        var f = function() {
            var j = c.min;
            var l = c.max;
            var k = c.setIsValid || function() {};
            var h = e.value ? e.value.length : 0;
            var i = h > l * .8 ? "supernova" : h > l * .6 ? "hot" : h > l * .4 ? "warm" : "cool";
            var g = "";
            if (h == 0) {
                g = "enter at least " + j + " characters";
                k(false);
            } else {
                if (h < j) {
                    g = j - h + " more to go..";
                    k(false);
                } else {
                    g = l - h + " character" + (l - h != 1 ? "s" : "") + " left";
                    k(h <= l);
                }
            }
            d.text(g);
            if (!d.hasClass(i)) {
                d.removeClass("supernova hot warm cool").addClass(i);
            }
        };
        $(this).bind("blur focus keyup", a.DelayedReaction(f, 100, {
            sliding: true
        }).trigger);
    });
}

例如,注解文本区域是这样设置的(同样是模糊的):

var x = z.find("textarea");
x.charCounter({
    min: 15,
    max: 600,
    setIsValid: A
});

相关问题