【发布时间】:2021-03-14 20:55:45
【问题描述】:
我对 javascript maxlength 计算有疑问。
Javascript
function charCount(characters) {
document.getElementById('citation').onkeyup = function () {
var s = this.value;
document.getElementById('sBann').innerHTML = (characters - s.length) + " characters left.";
};
}
JSP:
<div class="FormRow">
<textarea class="textAreaLarge" rows="20" cols="180" name="citation" id="citation" maxlength="<%=maxCitationLength%>" onKeyUp="charCount(<%=maxCitationLength%>);"><%=citation%></textarea>
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<strong><div id="sBann" class="minitext"><% if (citation != null) { %><%= (maxCitationLength-citation.length()) %><%} else {%><%= (maxCitationLength) %><%}%> characters left.</div></strong>
</div>
我的 textarea 的最大长度为 1650,其中也应该包含空格。 我有一个创建页面。 当我在 UI 中输入内容时,它会将行尾视为 1 个字符,并允许最多 1650 个字符,并阻止用户输入更多字符。 但是在服务器端,CR 和 CF 的行尾被视为 2 个字符,虽然 JS 计算 1650,但数据被插入 CR 和 CF,DB 中的长度大于 1650,例如 1680。 在数据库方面,这个字段是一个 clob,所以即使它存储 > 1650 我也没有问题。
现在我有一个编辑屏幕,我必须在其中显示相同的文本区域并允许用户进行编辑。 对于上面我输入 1650 但 DB 显示 1680 的相同示例,UI 中的 textarea 显示 1680 个字符,因此显示剩余字符数的加载跨度为 -20,因为服务器端包含 CR/CF 值。
如何处理客户端验证以包含 CR/CF 的 2 个字符?
【问题讨论】:
标签: javascript java jquery jsp textarea