为了账号安全,请及时绑定邮箱和手机立即绑定

Chrome使用maxlength属性计算textarea中的字符错误

Chrome使用maxlength属性计算textarea中的字符错误

动漫人物 2019-10-09 17:47:40
这是一个例子:$(function() {  $('#test').change(function() {    $('#length').html($('#test').val().length)  })})<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><textarea id=test maxlength=10></textarea>length = <span id=length>0</span>在行中填充文本区域(一行中一个字符),直到浏览器允许为止。完成后,离开textarea,js代码也将计算字符。因此,就我而言,在chrome阻止我之前,我只能输入7个字符(包括空格)。尽管maxlength属性的值为10:
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

关于maxlength,您的回车符被视为每个2个字符。


1\r\n

1\r\n

1\r\n

1

但似乎javascript只能\r\n(最多加7)之一(我不确定是哪一个)。


查看完整回答
反对 回复 2019-10-09
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

由于未知原因,jQuery始终将a值中的所有换行符转换<textarea>为单个字符。也就是说,如果浏览器为\r\n换行符提供了它,那么jQuery确保它只是\n在返回值中.val()。


Chrome和Firefox都<textarea>出于“最大长度”的目的以相同的方式计算标签的长度。


但是,HTTP规范坚持将换行符表示为\r\n。因此,jQuery,webkit和Firefox都会出错。


结果是,<textarea>如果服务器端代码的字段值确实具有固定的最大大小,则标记上的“ maxlength” 几乎没有用。


编辑 -至此(2014年末),Chrome(38)的行为似乎正确。但Firefox(33)仍未将每次硬回返都算作2个字符。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 780 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信