按Tab键,空格键,删除键和退格键时如何计算字符?

时间:2018-01-08 14:08:41

标签: javascript jquery

我知道这个问题可能重复,但到目前为止我还无法找到解决方案。也许我搜索的方式是错误的。

我需要使用"空格键"计算textarea的总字符数和空格数。 " tab键" "删除"或"退格"。

到目前为止,我有以下代码,但我不知道为什么它没有考虑计数中的标签空间。

<textarea id="myTextArae"></textarea>
$("#myTextArae").on("keydown", function(e) {
  if (e.keyCode === 9) { // tab was pressed
    let start = this.selectionStart;
    let end = this.selectionEnd;
    var $this = $(this);
    $this.val($this.val().substring(0, start) + "\t" + $this.val().substring(end));
    this.selectionStart = this.selectionEnd = start + 1;
    var txt = $("#balanceCharacInTxtarea").val();
    if (txt != parseInt("0")) {
      e.preventDefault();
    }
    return false;
  }
})

$("#myTextArea").on("paste", function (e) {
  setTimeout(function () {
    that.check(e, e1, 0);
  }, 100);
});

check(eventcode, e1, code) {
  if (code === 0) {
    this.calculate = this.characterCount(e, e1, default);
  } if (code === 1) {
    this.calculate = e1 ? e1.length : 0;
  }
}
var default = 175

1 个答案:

答案 0 :(得分:3)

如果像

一样简单
 $("#yourtextarea").keyup(function() {
    var count = $("#yourtextarea").val().length;
 });

这将计算空格,制表符,换行符和其他字符。
它也会在粘贴时触发。

示例

&#13;
&#13;
$(document).ready(function(){
    $("#test").html(0);

    //this is for counting the characters
    $("#message").keyup(function() {
        var txtlgt = $("#message").val().length;
        $("#test").html(txtlgt);
    });
    
    //This is for enabling tabs in the textarea
    $("#message").on("keydown", function(e) {
        if (e.keyCode === 9){ 
            let start = this.selectionStart;
            let end = this.selectionEnd;
            var $this = $(this);
            $this.val($this.val().substring(0, start) + "\t" + $this.val().substring(end));
            this.selectionStart = this.selectionEnd = start + 1;
            return false;
        }
    })
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test"></div>

<textarea id="message"></textarea>
&#13;
&#13;
&#13;