使用jQuery Validation Unobtrusive时描述的aria的多个值

时间:2014-10-30 16:38:03

标签: javascript jquery unobtrusive-validation

我使用最新版本的jQuery Validation Unobtrusive结合最新版本的jQuery Validate。验证本身就像一个魅力。但是,如果该字段无效,则会将值添加到aria-describedby属性。

假设我要输入我的密码(验证密码的长度必须大于6)。最初的HTML看起来像这样:

<input data-val="true" data-val-minlength="The field Passwort must be a string or array type with      a minimum length of '6'." 
   data-val-minlength-min="6" data-val-required="The Passwort field is required." 
   id="Password" name="Password" tabindex="2" 
type="password">

我开始输入一个只包含5个字符的密码,然后点击input上的某处,从body移除焦点。验证将继续执行,并添加一系列属性和值,包括aria-describedby。现在,aria-describedby属性只有一个值Password-error。如果我再次聚焦输入字段并删除所有字符,甚至按下退格键,则会在每个键盘上添加一个新值。这导致以下结果:

<input data-val="true" 
   data-val-minlength="The field Passwort must be a string or array type with a minimum length of '6'." 
   data-val-minlength-min="6" 
   data-val-required="The Passwort field is required." 
   id="Password" name="Password" tabindex="2" type="password" aria-required="true" 
   aria-invalid="true" class="input-validation-error" 
   aria-describedby="Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error Password-error 
Password-error">

对于值相等的属性,这是相当大的开销值。这种行为是常见的还是有人知道如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

此问题出现在jquery.validate.js的v1.13.0中,但此后已修复(至少在v1.14.0中)。

答案 1 :(得分:0)

我对此问题没有明确的解释,但由于Visual Studio在后台创建了卷影副本,我可以通过清除cashe并删除项目的所有阴影文件并在之后重建来解决问题。