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
});
6条答案
按热度按时间osh3o9ms1#
可能类似于(使用jQuery):
(我知道不去看他们是怎么做的是很懒的,但这里有一个工作示例:(第10页)
xwmevbvl2#
于飞:
JS:
没有经过测试,但这是最基本的
esbemjvw3#
这可以通过几种方式来实现,但这里有一个链接到一些简单的源代码。唯一确定的方法是了解SO是如何实现的,那就是查看压缩的javascript。
http://javascript.internet.com/forms/character-counter.html
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
中文本长度的组合。ej83mcc05#
大概是这样的:
变量最大值= 1000;
http://jsfiddle.net/Paulpro/S4Dtu/
b4qexyjb6#
下面是StackExchange的charCounter()方法的定义,它有点模糊,但是如果你仔细研究它,你可以找到它的逻辑:
例如,注解文本区域是这样设置的(同样是模糊的):