焦点在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();