gro*_*ans 14 validation jquery jquery-validate
我正在使用jQuery.validate v 1.6.0来验证我的表单.
我的一个数据库字段限制为1000个字符.我在相应的textarea中添加了一个验证,如下所示:
在我的页面标题中,我添加
$('form.validate').validate();
Run Code Online (Sandbox Code Playgroud)
在我的页面内,我声明:
<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>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,jQuery似乎将"新行"中涉及的字符数量与我的数据库不同.
当我输入没有新行的1000个字符时,一切顺利,验证工作正常.如果我用一些新行键入1000个字符,jQuery允许POST发生,但我的数据库拒绝插入/更新,因为数据太大.
任何提示将不胜感激.
小智 5
我使用jQuery Validate 1.9来解决这个问题.因为我在服务器上使用ASP.NET MVC 3和C#,服务器上的断点是"\ r \n",而在客户端上是"\n".当我在客户端上验证我的textarea时,验证没有失败,因为"\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;
});
Run Code Online (Sandbox Code Playgroud)
所以这段代码实际上做的是获取maxlength值,然后从元素中获取值,然后用"\ r \n"替换所有"\n"字符,以获得与服务器相同的字符数.
| 归档时间: |
|
| 查看次数: |
9263 次 |
| 最近记录: |