我有一个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中。
答案 0 :(得分:1)
$("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/
小提琴