jQuery验证textarea maxlength错误

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"字符,以获得与服务器相同的字符数.


小智 -5

删除服务器验证并仅保留客户端验证。在html中新行= 3个字符在数据库中新行= 1个字符所以你一次只能保留一个。或更改数据库字符设置