我有一个表单,其中包含一些输入字段。我使用tabStrip KendoUI小部件对输入字段进行分组。当提交表单时,我使用Kendo验证器触发一些错误消息。问题在于,如果带有错误消息的输入字段位于当前选定的不同选项卡上,则用户无法看到它。我想要实现的是在验证表单时选择包含第一个出现错误消息的输入字段的选项卡,并将焦点放在该输入字段上。以下是一些示例代码:
<script type="text/javascript">
$("#tabStrip").kendoTabStrip();
</script>
<div id="tabStrip">
<ul>
<li class="k-state-active">Master Info</li>
<li>Developer Info</li>
</ul>
<div id="tabStrip-1">
<div>
<label for="folderName" class="required">Folder Name:</label>
<input type="text" id="folderName" name="folderName" required />
<span class="k-invalid-msg" data-for="folderName"></span>
</div>
<div>
<label for="afk">Afk:</label>
<input type="text" id="afk" name="afk" data-bind = "value: Afk" />
</div>
</div>
<div id="tabStrip-2">
<div>
<label for="updateFolder" class="required">Update Folder:</label>
<input type="text" id="Text1" name="updateFolder" class="k-input k-invalid" required />
<span class="k-invalid-msg" data-for="updateFolder"></span>
</div>
<div>
<label for="age">Age:</label>
<input type="text" id="age" name="age" class="k-input k-invalid" data-bind = "value: Age" />
</div>
</div>
</div>
提交表单后,验证会被触发,我将查找第一个包含错误消息的输入标签的选项卡。但是将焦点设置在具有错误消息的第一个元素上并不起作用。我怀疑在提交后输入元素尚未加载。以下是js代码:
if (!omega.validatable.validate()) {
//Select all the tab strips
tabs = $("#tabStrip").find('div[id^=tabStrip]');
var tabStrip = $("#tabStrip").data("kendoTabStrip");
//Loop through the tab strips looking for an input containing the error class
for (var i = 0; i < tabs.length; i += 1) {
if ($(tabs[i]).find('input[class~=k-invalid]').length > 0) {
tabStrip.select(i);
// Set focus on the first input element with error message
$('input.k-input.k-invalid:first').focus();
break;
}
}
return false;
}
使用
$(document).ready(function () {
$('input.k-input.k-invalid:first').focus();
});
这个阶段不会有帮助,请帮忙。谢谢!