ie focus bug 解决方法


  本文标签:ie,focus,bug,

如果把input.focus()放在一个setTimeout中延时执行,则就可以获得焦点 。
复制代码 代码如下:

<script type="text/javascript" >
(function(){
function get(id){
return document.getElementById(id);
}
window.onload = function(){
get(makeinput).onmousedown = function(){
var input = document.createElement(input);
input.setAttribute(type, text);
input.setAttribute(value, test1);
get(inpwrapper).appendChild(input);
input.focus();
input.select();
}
get(makeinput2).onmousedown = function(){
var input = document.createElement(input);
input.setAttribute(type, text);
input.setAttribute(value, test1);
get(inpwrapper2).appendChild(input);
setTimeout(function(){
input.focus();
input.select();
}, 0);
}
get(input).onkeypress = function(){
get(preview).innerHTML = this.value;
}
}
})();
</script>
<h1><code>setTimeout</code></h1>
<h2>1、未使用 <code>setTimeout</code></h2>
<button id="makeinput">生成 input</button>
<p id="inpwrapper"></p>
<h2>2、使用 <code>setTimeout</code></h2>
<button id="makeinput2">生成 input</button></h2>
<p id="inpwrapper2"></p>
<h2>3、另一个例子</h2>
<p><input type="text" id="input" value=""/><span id="preview"></span></p>