gpt4 book ai didi

javascript - IE8 中的 maxLength

转载 作者:行者123 更新时间:2023-11-28 08:54:22 25 4
gpt4 key购买 nike

使用 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 个字符。

但是,如果我在每一行输入文本并按 Enter 键,这就是我能够输入的内容:

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 大小的代码,但事实并非如此。我确信我只是在代码中遗漏了一些东西,并且希望您能了解我做错了什么并且似乎还没有弄清楚。

最佳答案

我自己偶然发现了答案。事实证明,我使用的字符计数器没有准确地计算 <textarea> 中的换行符。 .

虽然我使用的是IE8,但我在一个关于Chrome在带有maxLength属性的textarea中计算字符错误的问题中找到了答案。这个问题是here

我之前使用的代码:

$("#myTextArea").keyup(function() {
var j = $(this).val().length;
var i = 25 - j;
$("#charsUsed").text( j );
$("#charsLeft").text( i );
});

已修改为:

$("#myTextArea").keyup(function() {
var x = $("#myTextArea").val();
var newLines = x.match(/(\r\n|\n|\r)/g);
var addition = 0;
if (newLines != null) {
addition = newLines.length;
}
var j = x.length + addition;
var i = 25 - j;
$("#charsUsed").text( j );
$("#charsLeft").text( i );
});

嵌入的新行必须作为 CR LF 对传输 - 实际上是 2 个字符。感谢other thread中的海报感谢他们的帮助。

关于javascript - IE8 中的 maxLength,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18705176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com