HTML5 maxlength与新行和表单提交错误字符计数

HTML5 maxlength与新行和表单提交错误字符计数,html,maxlength,Html,Maxlength,它是6个字符“12\r\n34”,我们在服务器端得到验证失败,因为我们预计最多5个字符 为什么会发生这种情况 有办法解决这个问题吗?要在客户端和服务器端进行相同的验证?这里您可以找到两种可能的解决方案,第一种是使用JS限制文本区域中的字符数,同时允许用户输入换行符: 在本例中,用户可以输入新行 在此示例中,用户无法输入新行。不需要JS 发送 功能验证车桥长度(e){ var MAX_LENGTH=event.target.dataset.maxlength; var currentLengt

它是6个字符“12\r\n34”,我们在服务器端得到验证失败,因为我们预计最多5个字符

为什么会发生这种情况


有办法解决这个问题吗?要在客户端和服务器端进行相同的验证?

这里您可以找到两种可能的解决方案,第一种是使用JS限制文本区域中的字符数,同时允许用户输入换行符:


在本例中,用户可以输入新行
在此示例中,用户无法输入新行。不需要JS
发送
功能验证车桥长度(e){
var MAX_LENGTH=event.target.dataset.maxlength;
var currentLength=event.target.value.length;
var length=event.target.value.replace(/\n/g',).length;
如果(长度>最大长度){
event.target.value=event.target.value.substr(0,currentLength-1);}
} 

一种解决方案是在验证之前删除服务器端的“\r”。

如果要在客户端进行验证,可以在输入/更改时使用事件。请提供一个示例,它有5个字符,因此此函数中的数据是可以的,但在提交时有6个字符。。我不确定您需要什么,如果您想在提交之前删除所有新行,这是可能的,但您将丢失所有“\n”字符,这是您想要的吗?如果用户按enter键,则文本中的新行将变松。我用第二个示例更新我的答案,其中用户不允许输入新行。如果有帮助,请告诉我。相反,如果您想要的是:1-允许用户通过按enter键输入新行;2-限制用户不输入超过5个“真实”字符;3-在5个字符上绕过服务器验证;除非您更改服务器代码,否则这是不可能的。我有一个疑问,如果maxlength为“5”,为什么您需要一个通常更适合长答案的textarea?您的用户可能不需要输入新行,所以我的第二个示例可能是您的解决方案。“5”是一个示例,您可以用“1000”替换,我想将textarea中的字符限制为5个,textarea中的新行将计为1个字符,但当它发送到服务器时,浏览器将“\n”替换为“\r\n”,所以现在服务器接收6个字符而不是5个字符,验证失败,但如果只需要maxlength=“5”,为什么不使用输入型文本呢?因为这是一个示例,在生产中我们使用1000
<textarea maxlength="5" rows="3" name="text"></textarea>
text=12%0D%0A34