使用 javascript 函数来防止超出文本字段的长度,但仍允许在其中粘贴和编辑。需要在 IE8 和 Firefox 中工作。
$(function() {
var helper = document.createElement('textarea');
//if (!('maxLength' in helper)) {
var supportsInput = 'oninput' in helper,
ev = supportsInput ? 'input' : 'propertychange paste keyup',
handler = function() {
var maxlength = +$(this).attr('maxlength');
if (this.value.length > maxlength) {
this.value = this.value.substring(0, maxlength);
}
};
$('textarea[maxlength]').on(ev, supportsInput ? handler : function() {
var that = this;
setTimeout(function() {
handler.call(that);
}, 0);
});
//}
});
如果文本在一行上,它可以正常工作(使用 maxLength = 25 进行测试)。但是,它不会执行回车和换行或正确解释它们。
例如,如果我在一行上输入以下文本:
1111122222333334444455555
它使用所有 25 个字符。
但是,如果我在每一行输入文本并按回车,这就是我能够输入的内容:
11111
22222
33333
4444
这只有 22 个字符。我知道它正在检测回车,因为当我输入时:11111
一个字符计数器显示 5。当我按下enter
键时,计数器变为 6,如果我输入22222
计数器现在是 11。
我用来计算字符的代码是:
$("#myTextArea").keyup(function() {
var j = $(this).val().length;
var i = 25 - j;
$("#charsUsed").text( j );
$("#charsLeft").text( i );
});
我认为问题可能是我输入的一些代码来自动调整 TextArea 的大小,但事实并非如此。我确定我只是在代码上遗漏了一些东西,希望能就我做错的事情提供意见,而且似乎还没有弄清楚。