我使用最新版本的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">
对于值相等的属性,这是相当大的开销值。这种行为是常见的还是有人知道如何解决这个问题?
答案 0 :(得分:4)
此问题出现在jquery.validate.js的v1.13.0中,但此后已修复(至少在v1.14.0中)。
答案 1 :(得分:0)
我对此问题没有明确的解释,但由于Visual Studio在后台创建了卷影副本,我可以通过清除cashe并删除项目的所有阴影文件并在之后重建来解决问题。