Javascript 将焦点放在IE中的输入框上

Javascript 将焦点放在IE中的输入框上,javascript,forms,internet-explorer,Javascript,Forms,Internet Explorer,在我正在开发的web应用程序中,我遇到以下情况: 我有一个表单,其中包含一组索引字段值,用户在其中输入信息,然后将表单提交给服务器。字段验证在服务器上进行。如果发现任何字段无效,表单将重新显示,我希望输入焦点自动转到第一个无效字段。我已经准备好了实现这一目标的代码,但问题是IE10中的关注点并没有放在这个领域(但它却放在了Firefox中) 在上面的代码中,我已经确认引用了正确的字段。除了在流程结束时,IE10没有将焦点放在引用的字段上,所有内容看起来都是应该的。为什么不呢?我必须做些什么才能做

在我正在开发的web应用程序中,我遇到以下情况:

我有一个表单,其中包含一组索引字段值,用户在其中输入信息,然后将表单提交给服务器。字段验证在服务器上进行。如果发现任何字段无效,表单将重新显示,我希望输入焦点自动转到第一个无效字段。我已经准备好了实现这一目标的代码,但问题是IE10中的关注点并没有放在这个领域(但它却放在了Firefox中)


在上面的代码中,我已经确认引用了正确的字段。除了在流程结束时,IE10没有将焦点放在引用的字段上,所有内容看起来都是应该的。为什么不呢?我必须做些什么才能做到这一点?

刚刚在控制台中尝试在IE中进行测试。以下代码在测试时运行良好,重点放在本页的“发布您的答案”文本区域

setTimeout(function(){document.getElementById(“wmd输入”).focus()},5000)


也许你的代码中还有其他东西干扰了焦点?您是否尝试过扩展超时值以查看它是否与此有关?

您正在尝试使用此行加载DOM,对吗

setTimeout(focusIndexField(indexfirstinvalidfield), 100);
那一排不像你想象的那样有效。focusIndexField立即执行,setTimeout函数将函数响应延迟100毫秒

这将如您所期望的那样起作用:

setTimeout(function() {focusIndexField(indexfirstinvalidfield)}, 100);

然而,这不是一个好的解决方案。代码应该在文档准备好时执行。

您对setTimeout函数的看法是正确的,但如您所说更改它并不能使该字段在IE 10中获得焦点。无论是否超时,文档准备就绪时都不会执行代码。IE10不尊重focus()方法。也许你应该尝试在JS中重现这个问题,这样我们也可以得到html代码?我尝试将它扩展到5秒,但它仍然没有将焦点放在IE10中的字段上。
setTimeout(function() {focusIndexField(indexfirstinvalidfield)}, 100);