我一直在撞墙,试图找出从文本区域获得角色倒计时的最佳方法。我创建了这个jsfiddle,但如果我从lipsum.com粘贴了4000个字符,那么就说它超过了12个字符。我知道这是因为换行符,但我不确定如何使其正常工作,并且在浏览器中始终如一。
$('textarea').on('keyup', function() {
characterCount(this);
});
$('textarea:not(:empty)').each(function() {
characterCount(this);
});
function characterCount(that) {
var $this = $(that),
$maxLength = $this.attr('data-val-length-max'),
$lengthOfText = $this.val().length,
$charCountEl = $this.closest('.form-group').find('.maxchar-count');
if($maxLength) {
$($charCountEl).text($maxLength - $lengthOfText);
}
if($lengthOfText > $maxLength) {
$charCountEl.addClass('has-error');
} else {
$charCountEl.removeClass('has-error');
}
}
标记
<div class="form-group">
<textarea rows="5" data-val-length-max="4000"></textarea>
<div>
<span class="maxchar-count">4000</span>
</div>
</div>
我已经看到了一些类似的问题但尚未找到适合我的答案。
由于
亨利
答案 0 :(得分:1)
尝试
$lengthOfText = $this.val().replace(/\n/g, '').length
而不是
$lengthOfText = $this.val().length
这样你就可以在textarea中删除新的行字符。
如果您希望从总计数中避免所有类型的间距,您可以使用
$lengthOfText = $this.val().replace(/\s/g, '').length
希望这有帮助。