在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
>
|