我遇到以下问题:我必须计算textarea中的剩余字符。这是一项简单的任务,并且有很多参考可以做这些事情。我为此创建的代码段是下面的。一切都运行正常,但是,QA团队做到了这一点:他们剪切并粘贴了一段txt文档的文本,然后粘贴,直到达到我文本区域允许的最大文本为止。但是,即使没有达到最大字符数,用户也不能再输入。
如果我使用退格键删除一些字符,我就不能再输入了。
让我更具体一点。让我们说最后一个词是“书呆子”,其余的字符是“47”。代码不允许我写更多,即使我使用退格并有“ner”我不能再输入一个字母!
小提琴下面有一个场景来检查我在说什么。您可以粘贴我小提琴的html部分的注释中的文本来说明我在说什么。提前感谢您的帮助。
http://jsfiddle.net/sLr8co1n/4/ GIF:http://gifmaker.cc/PlayGIFAnimation.php?folder=2015020423hlKs7Ki7knoQBCZAoSaQNN&file=output_rwGbzN.gif
$("#textAreaComplemento").bind("keyup change", function (e) {
calculaCaracteresRestantes();
});
var text_max = 200;
function calculaCaracteresRestantes() {
if ($('#textAreaComplemento').val() == undefined) {
return false;
}
var text_length = $('#textAreaComplemento').val().length;
var text_remaining = text_max - text_length;
$('#textarea_feedback').html(text_remaining);
return true;
}
答案 0 :(得分:4)
在Fiddle中测试和玩游戏之后,我可以弄清楚基本上“$('#textAreaComplemento')。val()。length”这一行只是查找字符数(并且不计算空格数) ,就像在这种情况下返回false之前有4个空格)。因此,当你复制,粘贴一些东西(比如你的代码之间有5个空格)时,用户只能在删除6个字母后输入,这使得总计数为194(200-6)+5(空格)+空格输入一个字母。
你可以使用这样的东西来避免浏览器计算任何空格或回车,只考虑字母:
$(function () {
$('#test').keyup(function () {
var x = $('#test').val();
var newLines = x.match(/(\r\n|\n|\r)/g);
var addition = 0;
if (newLines != null) {
addition = newLines.length;
}
$('#length').html(x.length + addition);
})
})
答案 1 :(得分:0)
这样的事可能有助于你交配...... :)
$("#textAreaComplemento").bind("keyup change input propertychange", function (e) {
calculaCaracteresRestantes();
});