剩余字符textarea问题

时间:2015-02-05 12:15:10

标签: javascript jquery

我遇到以下问题:我必须计算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;
 }

2 个答案:

答案 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();
    });

Fiddle