我试图从其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);
});
请问我错过了什么?
答案 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值