文本区 | val().length 不计算 chrome 中的“输入/换行符”
Posted
技术标签:
【中文标题】文本区 | val().length 不计算 chrome 中的“输入/换行符”【英文标题】:Textarea | val().length not counting "Enter/Line Breaks" in chrome 【发布时间】:2016-06-30 11:33:14 【问题描述】:我有一个textarea
与属性maxlength
设置为350
&它工作得很好,它也计数输入/换行作为一个字符。 P>
我还可以选择显示一个错误消息,如果用户尝试于或达到键入更多到350
字符的限制针对我使用这个代码:
$("textarea").keyup(function (e)
if($(this).val().length >=350)
$('.error').show();
else
$('.error').hide();
);
它的工作原理,但在Chrome并不指望输入/换行符,但最大长度不作为的结果,如果用户在多行文本断,他做后350字符停止打字,但没有看到任何消息。
下面是一起玩一个小提琴:https://jsfiddle.net/udp9oxx4/ P>
请注意此错误只发生在铬。 P>
【问题讨论】:
是它是示出了MSG超过350 charecters在铬跨度> 我只是通过这一个燃烧。正如你所说,textarea的值不包括CR / LF类。我有一些代码,通过客户端验证,但它无法在服务器上,因为该值有更多的字符超过允许的。 SPAN> 【参考方案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/
小提琴
【讨论】:
谢谢,我刚刚在 mac safari 上测试了我的小提琴,bug 也在那里,应该为window.safari
添加一个条件,我想它必须用 chrome 和 safari javascript 做一些事情引擎。
我现在有点忙,但是我们得看看这是不是js引擎的问题,如果是的话,应该是基于js引擎的情况。
这个答案不再有效以上是关于文本区 | val().length 不计算 chrome 中的“输入/换行符”的主要内容,如果未能解决你的问题,请参考以下文章