如何评估另一个DOM元素中的textarea字符长度

时间:2016-04-21 16:08:00

标签: javascript jquery html

我试图从其maxlength中减去textarea的当前字符串长度,然后将输出提供给页面上的另一个标记。单独地,我评估的值确实返回正确的值,但是如果我记录或尝试使用它们的总和,则textarea的值保持停滞。这是我的标记

<textarea maxlength='10'>init</textarea> <br>
<span id='count'></span> </br>

然后在我的js中,我有

var max = parseInt($("textarea").attr("maxlength")), len = $("textarea").val().length, currLen = max - len-1;

$(document).ready(function() {
$('#count').html(currLen);
});

$("textarea").on('input', function(){
console.log(currLen);
$("#count").html(currLen);
});

请问我错过了什么?

3 个答案:

答案 0 :(得分:1)

您没有重新计算这些值。尝试:

$(document).ready(function() {

     var max = parseInt($("textarea").attr("maxlength"));


    $("textarea").on('input', function(){
     var len = $("textarea").val().length, currLen = max - len-1
     console.log(currLen);
     $("#count").html(currLen);
    }).trigger("input"); //once to start
});

答案 1 :(得分:0)

每次输入更改时都必须重新评估输入值的长度,如下所示:

var max = parseInt($("textarea").attr("maxlength")),
  len = $("textarea").val().length,
  currLen = max - len - 1;  

$(document).ready(function() {
  $('#count').html(currLen);
});

$("textarea").on('input', function() {
  max = parseInt($("textarea").attr("maxlength"));
  len = $("textarea").val().length;
  currLen = max - len - 1;  
  console.log(currLen);
  $("#count").html(currLen);
});

否则,您只会引用使用

初始化变量的值

答案 2 :(得分:0)

我认为您在登录输入回调函数之前首先重新计算currLen值