首页 > 解决方案 > javascript验证带空格的长度

问题描述

我有一个计算文本区域中字符长度的功能,如下所示: 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"

javascript正确地做到了。说 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 个字符,包括空格,表格显示还剩 0 个字符,不允许我输入更多。但是当我提交 servlet 时再次进行验证并收到错误消息说字段不能大于 1500 个字符。常量值是相同的 1500。但是我猜空间在 java 和 javascript 中的计算方式不同。做这个的最好方式是什么?请问有什么建议吗?

标签: javascriptjavajqueryjsp

解决方案


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

表单中的文本区域 请求参数

所以我的解决方案是我们将这些字符替换为space.

使用 Javascript:

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

使用 Java:

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


推荐阅读