文本区 |val().length 不计算 chrome 中的“输入/换行符”

Textarea | val().length not counting "Enter/Line Breaks" in chrome

本文关键字:中的 输入 换行符 chrome 计算 val length 文本区      更新时间:2023-09-26

我有一个textarea,属性maxlength设置为350,它工作正常,它还将输入/换行符计为字符。

如果用户尝试键入超过或达到我使用此代码的字符限制350我还必须显示错误消息:

$("textarea").keyup(function (e) {
    if($(this).val().length >=350){
        $('.error').show();
    }else{
        $('.error').hide();
    }
});

它可以工作,但在 chrome 中它不计算输入/换行符,但 maxlength 会因此而计算,如果用户在多行中中断文本,他确实会在 350 个字符后停止输入,但没有看到任何消息。

这里有一个小提琴可以玩:https://jsfiddle.net/udp9oxx4/

请注意,此错误仅发生在 chrome 中。

$("textarea").keyup(function (e) {
var isChrome = window.chrome;
if(isChrome){
var value = $(this).val().replace(/('r'n|'n|'r)/g,"  ");
}
else{
var value = $(this).val();
}
        if(value.length >=350){
            $('.error').show();
        }else{
            $('.error').hide();
        }
    });

Chrome 将换行符计为 2 个字符,因此计算字符数错误。只需在函数前面添加此代码,它就可以正常工作。

https://jsfiddle.net/3wpqd4nr/

小提琴