jQuery验证使用StringLength属性处理尾随空格

时间:2014-09-17 21:24:35

标签: jquery asp.net-mvc jquery-validate data-annotations unobtrusive-validation

方案
我的用例是jQuery不引人注意的验证和the StringLength attribute。我的数据库列是varchar(500),我想阻止用户输入超过500个字符,因此我将viewmodel属性装饰为[StringLength(500)]。非常基本。

为该属性生成的html是正确的:

<textarea name="MyTextbox" id="MyTextbox" 
 data-val-required="The MyTextbox field is required." 
 data-val-length-max="500"
 data-val-length="The field MyTextbox must be a string
 with a maximum length of 500." data-val="true"></textarea>


问题
jQuery验证似乎没有像它应该那样考虑尾随空格,所以它让坏数据通过。

例如;如果我尝试输入以下内容,这些是我得到的结果:

  • 500个字符:
    jQuery验证认为它有效,按预期工作。
  • 501个字符 没有 尾随空格(即;字符串以实际字符结尾):
    jQuery验证显示错误,它应该再次作为意图。
  • 501个字符 尾随空格(即;字符串以空格结尾):
    jQuery验证无法捕获它。它认为它有效并让它通过。

如果我不使用服务器端验证&amp;它通过DbContext.SaveChanges(),Entity Framework将抛出一个DbEntityValidationException。
由于我使用服务器端验证(典型的asp.net-mvc检查ModelState.IsValid)并将其捕获为无效,因此这并不是什么大不了的事。所以它不会漏掉,但它只是在这个非常具体的情况下必须击中服务器才有点难看。这是jQuery的错误,还是按预期工作?如果是这样,那似乎没有多大意义。

1 个答案:

答案 0 :(得分:1)

正如@Sparky建议的那样,我通过jquery-validation GitHub页面将其作为一个问题提交,并且作者已经实现了更改(可以看到here。)