我希望在用户输入时减少给定文本区域的字符数。 我使用下面的代码
var txtArea = $('<textarea class="txtStyle"></textarea>').appendTo('.txtArea');
var rem_txt = 500;
var text = "Characters remaining";
$('.txtStyle').keyup(function () {
debugger;
var txt_txtarea = $(this).val().length;
rem_txt = rem_txt - txt_txtarea;
});
$('<div id="rem">' + text + '=' + rem_txt + ' </div>').appendTo('.txtArea');
但是div没有更新count的值。请帮助DEMO HERE
答案 0 :(得分:3)
你没有更新你的处理程序中的html为keyup,你只是重新计算剩余的金额而不是更新UI。
如果更新事件处理程序中的内部文本,您将看到剩余的文本:
var lengthAllowed = 500,
txtArea = $('<textarea class="txtStyle"></textarea><div id="rem">Characters remaining ' + lengthAllowed + '</div>').appendTo('.txtArea');
$('.txtStyle').keyup(function () {
var charsSoFar = $(this).val().length,
remaining = lengthAllowed - charsSoFar;
$('#rem').text('Characters remaining='+remaining);
});
虽然已达到最大文本但尚未处理。
答案 1 :(得分:1)
您的问题是您在keyup
功能之外显示初始值。在这里小提琴:http://jsfiddle.net/5Lszd/3/
答案 2 :(得分:1)
您可以稍微降低代码的复杂性:
标记:
<textArea class="txtStyle" maxlength="500"></textArea>
<div id="txtRemaining"></div>
脚本
$('.txtStyle').keyup(function () {
$('#txtRemaining').html('Characters remaining ' + (500 - $(this).val().length));
});
答案 3 :(得分:0)
您需要更新每个keyup事件的内容
var txtArea = $('<textarea class="txtStyle"></textarea>').appendTo('.txtArea');
var rem_txt = 500;
var text = "Characters remaining";
$('.txtStyle').keyup(function () {
var txt_txtarea = $(this).val().length;
rem_txt = rem_txt - txt_txtarea;
$('#rem').html(text + '=' + rem_txt); // update the value of #rem
});
$('<div id="rem">' + text + '=' + rem_txt + ' </div>').appendTo('.txtArea');
答案 4 :(得分:0)
你需要更新txt,也不要更新rem_txt,它应该是const
//this should be a const
var rem_txt = 500;
var text = "Characters remaining";
$('.txtStyle').keyup(function() {
var txt_txtarea = $(this).val().length;
updateRemain(rem_txt - txt_txtarea);
});
function updateRemain(rem_txt) {
var rem = $('#rem');
if (!rem.length) {
rem = $('<div id="rem"></div>').appendTo('.txtArea');
}
rem.html(text + '=' + rem_txt);
}
updateRemain(rem_txt);
答案 5 :(得分:0)
你没有在keyup之后更新值......
添加$('#rem').html(text + '=' + rem_txt);
,你应该没问题!
答案 6 :(得分:0)
您可以像这样简化代码
主要问题是你将rem_txt
设置为500从修正值中减去任何新字符,而不是从500减去。你的代码应该看起来更像这样
var txtArea = $('<textarea class="txtStyle"></textarea>').appendTo('.txtArea');
$('<div id="rem">Characters remaining = 500 </div>').appendTo('.txtArea');
var text = "Characters remaining";
$('.txtStyle').keyup(function () {
var rem_txt = 500 - $(this).val().length; //Calculate your new length from 500 each time
if($('#rem')) $('#rem').html('Characters remaining = '+rem_txt);
});
我首先在初始值中创建div,然后在你的keyup函数中创建它,修改它的HTML。您之前尝试更新keyup事件之外的div的HTML,因此实际上它只运行了一段代码。