我正在使用 jQuery.validate v 1.6.0 来验证我的表单。
我的数据库字段之一限制为 1000 个字符。我向相应的文本区域添加了验证,如下所示:
在我的页面标题中,我添加
$('form.validate').validate();
在我的页面中,我声明:
<form method="post" class="validate" action="Save">
<textarea name="description" minlength="15" maxlength="1000" id="description" class="required"></textarea>
<input type="submit" value="Save">
</form>
我遇到的问题是,jQuery 计算“换行”中涉及的字符数的方式似乎与我的数据库不同。
当我准确输入 1000 个字符且没有换行时,一切顺利,并且验证有效。如果我输入 1000 个字符和一些新行,jQuery 允许 POST 发生,但我的数据库拒绝插入/更新,因为数据太大。
任何提示将不胜感激。
我使用 jQuery Validate 1.9 遇到了这个特殊问题。因为我在服务器上使用 ASP.NET MVC 3 和 C#,换行符在服务器上是“\r\n”,但在客户端上是“\n”。当我在客户端上验证我的文本区域时,验证没有失败,因为“\n”仅算作一个字符,但是当文本在换行符为“\r\n”的服务器上进行验证时,验证将失败。
我对这个问题的解决方案是重写 jQuery 验证方法“rangelengt”,因为我还定义了最小长度:
$.validator.addMethod('rangelength', function (value, element) {
var maxlen = parseInt($(element).attr('data-val-length-max'));
if (maxlen > 0) {
var remaining = (maxlen - (parseInt($(element).val().replace(/(\r\n|\n|\r)/gm, '\r\n').length)));
if (remaining < 0) {
return false;
}
}
return true;
});
因此,这段代码实际上所做的是获取 maxlength 值,然后从元素中获取该值,然后用“\r\n”替换所有“\n”字符,以获得与服务器相同的字符数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)