当前位置: 首页 > 图文教程 > 网络编程 > Javascript > ie focus bug 解决方法

Javascript
不是原型继承那么简单!!prototype的深度探索
JavaScript与函数式编程解释
转一个日期输入控件,支持FF
用 JSON 处理缓存
改版了网上的一个js操作userdata
仿服务器端脚本方式的JS模板实现方法
javascript函数库-集合框架
Javascript模板技术
javascript实现的listview效果
JavaScript 实现網頁打印處理
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
实现div可编辑的常见方法总结
js奇偶数判断的代码
可以支持多中格式的JS键盘
javascript静态的url如何传递
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
Packer 3.0 JS压缩及混淆工具 下载
学习jquery必备 api中英文对照的chm手册 下载
用js实现CSS圆角生成更新
用js实现的抽象CSS圆角效果!!

Javascript 中的 ie focus bug 解决方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 516 ::
收藏到网摘: n/a

在IE中,新创建的input没有如预期的获得焦点。 如果把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>