这是一个例子:$(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)之一(我不确定是哪一个)。
天涯尽头无女友
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个字符。
添加回答
举报
0/150
提交
取消