焦点在IE中不起作用

我有以下function

function change() { var input = document.getElementById('pas'); var input2 = input.cloneNode(false); input2.type = 'password'; input.parentNode.replaceChild(input2,input); input2.focus(); } 

focus()在ie7中不起作用,所以我能做些什么! 我想要在input的光标!

谢谢

更新

伟大的解决scheme,谢谢,但现在它不能在歌剧:(

对于IE,你需要使用settimeout函数,因为它是懒惰的,例如:

 setTimeout(function() { document.getElementById('myInput').focus(); }, 10); 

http://www.mkyong.com/javascript/focus-is-not-working-in-ie-solution/

对于歌剧来说,这可能有助于: 如何在歌剧的文本框中的所需索引中设置焦点

我们遇到了同样的问题。 为了进行对焦,我们使用的通用函数是应用100ms的http://www.mkyong.com/javascript/focus-is-not-working-in-ie-solution/中提到的settimeout解决scheme。;

仍然在一些屏幕上,它不能正常工作。 特别是当包含iframe时。 还有另一个已知和类似的IE问题:
IE 9和IE 10不能在input文本框中随时input文本 – > IE 9和IE 10不能随时在input文本框中input文本

我注意到,当你有焦点时,如果没有指针,你可以通过按TAB键(关注下一个元素)和SHIFT + TAB来应用变通办法,这将通过焦点和input指针返回到我们的目标元素。 为了确保我们可以input内部input,我们关注随机元素,然后关注目标input。

 $('body').focus(); n.focus(); 

所以我们在通用焦点函数中将相同的解决scheme应用于javascript / JQuery中。 所以有一个if语句

 ... if($.browser.msie) { setTimeout(function() { try { $('body').focus(); //First focus on random element $(n).focus(); //Now focus on target element } catch (e) { /*just ignore */ } }, 100); //See http://www.mkyong.com/javascript/focus-is-not-working-in-ie-solution/ } else { //Standard FF, Chrome, Safari solution... ... 

可以肯定的是,由于有了很大的回归,我们仍然保持settimeout的解决scheme作为备份。 testingIE10,IE11,Firefox 45,Chrome 49.0.2623.87

IE7不支持focus()方法。 我没有看到任何方法。

我有同样的问题,并能够让IE浏览器使用代码背后通过SetInitialFocus函数并在我的PageLoad函数中调用它。

看看下面的例子,给它一个镜头,它为我工作。 http://www.cambiaresearch.com/c4/df9f071c-a9eb-4d82-87fc-1a66bdcc068e/Set-Initial-Focus-on-an-aspnet-Page.aspx

 function change() { var input = document.getElementById('pas'); var input2 = input.cloneNode(false); input2.type = 'password'; input.parentNode.replaceChild(input2, input); setTimeout(function () { input2.focus(); }, 10); } 

它是非常容易使用jQuery,不知道为什么你这样做是困难的方式:)在这个例子中,我有一个类分配到input字段我想初始焦点集称为initFocus。 您可以使用任何您想要查找元素的select器。 从你的代码我会使用$(“#pas”)。

 $(".initFocus").focus();