文本区域 | val().length 不计算 chrome 中的 "Enter/Line Breaks"

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

我有一个 textarea 属性 maxlength 设置为 350 & 它工作正常,它也将 enter/line 中断算作一个字符。

如果用户尝试键入超过或达到 350 个字符限制,我也必须显示一条错误消息,我正在使用此代码:

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

它有效,但在 chrome 中,它不算 enter/line 中断,但 maxlength 计算结果,如果用户在多行中中断文本,他会在 350 个字符后停止输入,但不会'看到任何消息。

这里有一个 fiddle 可以玩: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/

Fiddle