您的位置:首页 > 其它

ie focus bug 解决方法

2009-09-03 00:00 309 查看
如果把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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: