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