javascript 验证带空格的长度

javascript validation for length with spaces

我有一个计算文本区域中字符长度的功能,如下所示: JSP代码:

<textarea class="textAreaLarge" id="citation" rows="20" cols="180" name="citation" maxlength="<%=maxCitationLength%>" onKeyUp="toCount(<%=maxCitationLength%>);"><%=citation%></textarea>
            <strong><div id="sBann" class="minitext"></div></strong>

JS是

function toCount(){
document.getElementById('citation').onkeyup = function () {
  document.getElementById('sBann').innerHTML = (characters - this.value.length) + " characters left.";
};
}

例如,这是忽略引号的文本区域的内容。不包括引号,总共 10 个字符。

"test

1111"

java脚本正确执行。假设 MaxLength 是 1500,它表示“还剩 1490 个字符”。

当在 java 端再次进行相同的验证时,这就是代码的作用。

int maxCitationLength = utility.getMaxCitationLength(rec);
String txtCitation = myUtil.checkNull(citationForm.getValue("citation"));
if (txtCitation.length() > maxCitationLength) {
    request.setAttribute("error",
                         "The Citation field cannot be larger than " + maxCitationLength +
                         " characters.");
}

这两个条件之间总是存在差异。例如,我在文本区域中输入了 1500 个字符,其中包括 spaces,但表格显示还剩 0 个字符并且不允许我输入更多。但是当我提交 servlet 再次进行验证并收到错误消息说字段不能大于 1500 characters.Constant 值是相同的 1500。但是我猜 space 在 java 和 [= 中的计算方式不同28=]脚本。做这个的最好方式是什么?有什么建议吗?

你说得对,Spring MVC 会将 LF = Line Feed, CR = carriage return 转换为 \r \n。我试图重现我的代码。

因此我的解决方案是我们将这些字符替换为 space

使用Java脚本:

someText = someText.replace(/(\n|\r)/g, " ");

与Java:

str = str.replaceAll(/(\n|\r)/g, " ")