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>