ie focus bug

在IE中,新建立的input沒有如預期的得到焦點。 app

若是把input.focus()放在一個setTimeout中延時執行,則就能夠得到焦點。 this

( 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;
           }
       }
   })();
< h1 >< code >setTimeout</ code ></ h1 >
< h2 >一、未使用 < code >setTimeout</ code ></ h2 >
< button id = "makeinput" >生成 input</ button >
< p id = "inpwrapper" ></ p >
< h2 >二、使用 < code >setTimeout</ code ></ h2 >
< button id = "makeinput2" >生成 input</ button ></ h2 >
< p id = "inpwrapper2" ></ p >
< h2 >三、另外一個例子</ h2 >
< p >< input type = "text" id = "input" value = "" />< span id = "preview" ></ span ></ p >
相關文章
相關標籤/搜索