尝试将新适配器添加到 Unobtrusive。
我的标记看起来不同,因为我使用 Telerik 而不是 JQuery UI 来创建选项卡。这是我的标记在通过 Validator 后的样子(即,通过 Unobtrusive 脚本插入了验证错误)
<div id="rItemTabs">
<ul>
<li><a href="#rItemTabs-1">Tab 1</a></li>
<li><a href="#rItemTabs-2">Tab 2</a></li>
</ul>
<!-- End Tab Nav-->
<!-- Begin Tab Contents -->
<div id="rItemTabs-1">
<div class="editor-label">
<label for="Title">Title</label>
</div>
<div class="editor-field">
<input id="Title" class="input-validation-error name="Title">
<span class="field-validation-error">*</span>
</div>
</div>
<div id="rItemTabs-2">
<div class="editor-label">
<label for="Title">Title</label>
</div>
<div class="editor-field">
<input id="Title" class="input-validation-error name="Title">
<span class="field-validation-error">*</span>
</div>
</div>
</div>
该脚本的目标是遍历“Tab Contents”中的每个 div,查找“field-validation-error”类(仅在有错误时才应存在),如果找到该类,则更改颜色关联的 Tab Nav 项(即选项卡内容的 id 与选项卡导航项的 href 相同)。
$.validator.unobtrusive.adapters.add(
'tab-validation',
function () {
var tabs = $('#rItemTabs [id*=rItemTabs]');
$(tabs).each(function () {
if ($(this).has('.field-validation-error').length) {
var tabId = '#' + $(this).attr('id');
$('a[href=' + tabId + ']').css({ 'color': 'red', 'font-weight': 'bolder' });
}
});
} (jQuery));
我希望这很有意义并且对你有用。