我有一个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/

小提琴

07-28 05:47