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