我正在处理的 Web 应用程序中有以下情况:
我有一个带有一组索引字段值的表单,用户在其中输入信息,然后将表单提交到服务器。字段验证在服务器上进行。如果发现任何字段无效,则重新显示表单,我希望输入焦点自动转到第一个无效字段。我已经准备好实现它的代码,但问题是焦点没有放在 IE 10 中的字段上(但它被放在 Firefox 中)。
placefocusonfirstinvalidindexfield();
// After an attempt to upload has failed due to one or more invalid fields, then place the input focus automatically on the first
// invalid field:
function placefocusonfirstinvalidindexfield() {
var hasattemptedupload = '@Model.HasAttemptedUpLoadNumeric';
if (hasattemptedupload == 1) {
var indexfirstinvalidfield = '@Model.GetIndexOfFirstInvalidField()';
// focusIndexField(indexfirstinvalidfield);
setTimeout(focusIndexField(indexfirstinvalidfield), 100);
}
}
function focusIndexField(fieldindex) {
var control = document.getElementById("field" + fieldindex);
control.focus();
}
在上面的代码中,我已经确认引用了正确的字段。一切似乎都应该如此,除了在进程结束时,IE10 不会将焦点放在引用的字段上。为什么不呢?我该怎么做才能做到这一点?