重制版字符文本区域问题

Remaning characters textarea problems

本文关键字:问题 区域 文本 字符 重制版      更新时间:2023-09-26

我面临以下问题:我必须计算文本区域中的剩余字符。这是一项简单的任务,做这样的事情有很多参考。我创建的代码如下。一切都很好,但QA团队做到了:他们剪切并粘贴了一段txt文档的文本,然后粘贴,直到达到我的文本区域允许的最大文本。但实际情况是,即使没有达到最大字符数,用户也无法再键入。

而且,如果我用退格删除了一些字符,我就不能再打字了。

让我更具体一点。假设最后一个单词是"nerd",剩下的字符是"47"。代码不允许我写更多的字,即使我使用退格并有"ner",我也不能再键入一个字母!

小提琴吼叫有一个场景来检查我在说什么。你可以粘贴我fiddle 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;
 }

在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);
})

})

这样的东西可能会帮助你…:)

  $("#textAreaComplemento").bind("keyup change input propertychange", function (e) {
        calculaCaracteresRestantes();
    });

Fiddle