【发布时间】:2015-05-07 18:20:31
【问题描述】:
我想限制用户在文本区域中输入 10 个字符,并在用户接近限制时通知用户。我通过设置文本区域的maxLength 属性来做到这一点,并使用一些javascript 在输入字符时更新标签。
但我的 javascript 没有正确计算新行。或者至少它不会以与textarea 元素相同的方式计算它们。如果我输入下面的示例输入,我的 javascript 将计算出正在使用 6 个字符并输出剩余 4 个字符,但 textarea 将不再允许输入。
示例输入:输入'D',按回车键4次,输入'D':
D
D
(我实际上允许超过 10 个,但较小的数字更能说明问题)
function limitText() {
var textarea = document.getElementById('textarea');
var char_label = document.getElementById('charcount_text');
var count = textarea.value.length;
var max = textarea.maxLength;
console.log(count + " " + max);
var remaining = max - count;
if (remaining <= 0) {
char_label.innerHTML = '10 character limit reached.';
} else if (remaining <= 5) {
char_label.innerHTML = '10 character limit, ' + remaining + ' remaining.';
} else {
char_label.innerHTML = '';
}
}
textarea {
width:200px;
height:80px;
}
<textarea id="textarea" onKeyDown="limitText()" onKeyUp="limitText()" maxlength="10"></textarea>
<span class="charcount_text" name="charcount_text" id="charcount_text"></span>
【问题讨论】:
标签: javascript html