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

标签 javascript jquery google-chrome textarea maxlength

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

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

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

它有效,但在 chrome 中,它不计算输入/换行符,但 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

关于javascript - 文本区域 | val().length 在 chrome 中不计算 "Enter/Line Breaks",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36004311/

相关文章:

javascript - jQuery:如何在字母之前移动字符

javascript - 动态添加文本的 i18n 翻译

javascript - 当 Prop 改变时渲染 react 组件

javascript - jQuery 复选框样式问题

javascript - 如何使用Jquery的:not selector on a ul

javascript - "debugger"在词法意义上是什么?

html - 谷歌浏览器表单元素重置不起作用

javascript - 2 个链接合一 anchor

javascript - 控制选择表单中的默认选择

internet-explorer - 为什么 IE9+、Chrome 和 Opera15+ 浏览器在用户代理中将自己标识为 Mozilla?