Javascript长度和textarea maxlength不匹配
Javascript length and textarea maxlength don't match up
问题:我有一个javascript函数,计算文本区域中的字符数量并将其输出到我的控制台。我还在文本区设置了maxlength
。
问题是,有时我的sum
和文本区域maxlength
不排队。
我该如何解决这个问题?由于
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/
你可能会触发太多的"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/尝试按下键,它工作:http://jsfiddle.net/RnTHJ/4/
Best将使用change事件。
编辑:如何使用keydown &而不是每次都从输入长度重新赋值。(小提琴)
var inputArea = $('textarea.test');
var sum = 100;
inputArea.keydown(function (evt) {
var evt = window.event ? window.event : e;
var k = evt.keyCode ? evt.keyCode : e.which;
if(k>48) {
if(sum>0) sum--;
}
else {
if(sum<100) sum++;
}
$(this).siblings().text(sum);
});
作为样本,我只检查随机情况48…你可以检查所有的字母&数字,如果可能的话。
我知道这是一个旧的线程,但在我的经验中,它不会匹配的唯一原因是由于换行字符。如果您在字段中按enter/return键,实际计数为两个字符('r'n),而不是像大多数人期望的那样只有一个('n)。也许这就是你计数不一致的问题?
相关文章:
- 高库存时期时间与时区不匹配
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- Javascript:图像与单选按钮的值不匹配
- 文本区域(jQuery)的结果不匹配
- 如果状态不匹配,则缩小为丑陋
- 为什么我网页的facebook点赞数与该网页的facebook页面不匹配
- 使用jscodeshift添加表达式时,错误{..}与类型字符串不匹配
- JavaScript正则表达式不匹配
- row.entity.xxxx属性doensn'排序后不匹配
- Url.Content中的Url不匹配
- 控件坐标与组坐标不匹配
- 使用正则表达式查找字符串中的不匹配字符
- CSS Media Query 和 Javascript/jQuery 不匹配
- 始终在 jQuery 自动完成中显示特定选项,即使它与输入不匹配
- 如果项目不匹配,则显示变量
- 正则表达式匹配 JQM 路由器插件中的“项目”但不匹配“项目”
- Lodash 从与值数组不匹配的数组中获取项目
- 比较 2 个数组并得到这些变量不匹配
- jquery DataTable 数据格式和警告 - 添加的数据与已知列数不匹配
- Javascript长度和textarea maxlength不匹配