目前我正试图在twitter textareas上创建基本相同类型的倒计时。它确实适用于第一个文本区域,但是当我开始输入第一个texarea时,它会复制所有帖子剩余的相同数量的字符。
我需要知道的是如何仅为当前的textarea获取剩余字符?
HTML:
<textarea name="comment" class="inputField newComment">@'.$post['username']." ".'</textarea>
<span class="countdown"></span>
jQuery:
function updateCountdown() {
var remaining = 140 - $('.newComment').val().length;
$('.countdown').text(remaining + ' characters remaining');
if(remaining < 0){
$(this).siblings('.postComment').hide(500);
}else{
$(this).siblings('.postComment').show(500);
if(remaining <= 10){
$(this).siblings('.countdown').css("color","red");
}else{
$(this).siblings('.countdown').css("color","black");
}
}
}
$('.newComment').change(updateCountdown);
$('.newComment').keyup(updateCountdown);
答案 0 :(得分:2)
尝试这样的事情,
HTML
<textarea name="comment" class="inputField newComment" data-limit=20></textarea>
<span class="countdown"></span>
<textarea name="comment" class="inputField newComment" data-limit=20></textarea>
<span class="countdown"></span>
JS
$(document).ready(function () {
$('textarea').on("propertychange keyup input paste",
function () {
var limit = $(this).data("limit");
var remainingChars = limit - $(this).val().length;
if (remainingChars <= 0) {
$(this).val($(this).val().substring(0, limit));
}
$(this).next('span').text(remainingChars<=0?0:remainingChars);
});
});
答案 1 :(得分:0)
我的版本有点长,但它有效,并且不需要textarea上的数据限制属性(或任何其他属性)。在我的情况下,我正在努力反对古老版本的jQuery和CMS,它有自己的表单构建器和对页面HTML的有限访问权限。
这是HTML:
<div id="counter">myTextArea</div>
<textarea id="myTextarea" rows="2" cols="30"> </textarea>
<div id="counter2">myTextArea2</div>
<textarea id="myTextarea2" rows="2" cols="30"></textarea>
这是jQuery:
$(document).ready(function() {
// set the IDs for the text areas and counters
// handy for aliasing long, CMS-generated IDs
var myTextarea = 'myTextarea';
var counter = 'counter';
var myTextarea2 = 'myTextarea2';
var counter2 = 'counter2';
$('#' + myTextarea).keyup(function () {
var charLimit = 150;
var remainingChars = charLimit - $(this).val().length;
if (remainingChars < 0) {
// trim input, if necessary
var tlength = $(this).val().length;
$(this).val($(this).val().substring(0, charLimit));
var tlength = $(this).val().length;
remain = parseInt(tlength);
$('#myTextarea').text(remain);
}
$('#' + counter).text('(' + remainingChars + ' characters left)');
});
$('#' + myTextarea2).keyup(function () {
var charLimit = 150;
var remainingChars = charLimit - $(this).val().length;
if (remainingChars < 0) {
// trim input, if necessary
var tlength = $(this).val().length;
$(this).val($(this).val().substring(0, charLimit));
var tlength = $(this).val().length;
remain = parseInt(tlength);
$('#myTextarea2').text(remain);
}
$('#' + counter2).text('(' + remainingChars + ' characters left)');
});
});
这是JSFiddle: