Javascript长度和textarea maxlength不匹配

时间:2013-03-29 03:07:58

标签: javascript jquery html textarea

问题:我有一个javascript函数,它计算textarea中的字符数并将其输出到我的控制台。我的textarea也设置了maxlength。问题是,有时我的sum和textarea maxlength没有对齐。

例如,textarea会阻止我的输入,但是sum变量会告诉我,我仍然有字符。特别是当我快速键入或同时插入多个字符时。

我该如何解决这个问题? 感谢


HTML:

<textarea maxlength="100"></textarea>

使用Javascript:

var inputArea = $('textarea');
inputArea.keyup(function(){
   var sum = 100 - inputArea.val().length;
console.log(sum);
});

JSFiddle http://jsfiddle.net/RnTHJ/3/

2 个答案:

答案 0 :(得分:1)

您可能会触发如此多的“keyup”事件,当您快速键入或一次输入多个字符时,事件不一定会完成它们被触发的顺序,并且您最终得到的结果是几个字符老。

您可能想要尝试一个小超时,并在每次启动新超时时取消超时。类似的东西:

var timeoutVariable;
var inputArea = $('textarea');
inputArea.keyup(function(){
   window.clearTimeout(timeoutVariable);
   timeoutVariable = setTimeout(runSum(),100);
});

function runSum() {
   var sum = 100 - inputArea.val().length;
   console.log(sum);
}

http://jsfiddle.net/RnTHJ/8/

答案 1 :(得分:0)

我知道这是一个旧帖子,但是根据我的经验不能匹配的唯一原因是由于换行符。如果您在字段中输入/返回实际上计为两个字符(\ r \ n)而不是maxlength验证,而不是像大多数人所期望的那样(\ n)。也许这就是你的问题与计数不匹配?