2016-03-15 50 views
1

我有一个textarea,其属性maxlength设置为350 &它工作正常,它也将输入/换行符作为字符计数。Textarea | val()。长度不在计数中的“Enter/Line Breaks”

我也有显示一个错误消息,如果用户尝试键入超过或达到350字符限制为此我使用此代码:

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

它的工作原理,但在Chrome不计输入/换行符,但如果用户在多行中破解文本,maxlength会导致结果,但他确实在350个字符后停止输入,但没有看到任何消息。

这里是玩小提琴:https://jsfiddle.net/udp9oxx4/

注意:此错误仅发生在铬。

+0

是它显示了在铬 –

+1

350个charecters我只是通过这一个烧毁的味精。正如你所说,textarea的价值不包括CR/LF。我有一些通过客户端验证的代码,但在服务器上失败,因为该值的字符数超过了允许的值。 – costa

回答

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/

小提琴

+0

谢谢,我刚刚在mac safari上测试了我的小提琴,并且bug也存在,应该为'window.safari'添加一个条件,我想它必须使用铬和Safari浏览器JavaScript引擎。 –

+0

我现在有点忙,但是我们将不得不寻找这是否是一个js引擎问题,如果是这样的话应该基于js引擎。 –