让textarea正确计算换行符

时间:2014-08-29 15:03:18

标签: javascript jquery html

我一直在撞墙,试图找出从文本区域获得角色倒计时的最佳方法。我创建了这个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>

我已经看到了一些类似的问题但尚未找到适合我的答案。

由于

亨利

1 个答案:

答案 0 :(得分:1)

尝试

$lengthOfText = $this.val().replace(/\n/g, '').length

而不是

$lengthOfText = $this.val().length

这样你就可以在textarea中删除新的行字符。

如果您希望从总计数中避免所有类型的间距,您可以使用

$lengthOfText = $this.val().replace(/\s/g, '').length

希望这有帮助。