文本区域 | 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
我有一个 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