假设我们有一个输入,我们想要添加一些文本。
<form>
First name:<br>
<input type="text" id="thename" name="firstname">
</form>
简单的方法是使用经典的element.value ...为输入添加值。 但是如果我想通过模拟按键事件来添加例如“大卫”呢?
我遵循了以下几种方法:
function simulateKeyEvent(character) {
var evt = document.createEvent("KeyboardEvent");
(evt.initKeyEvent || evt.initKeyboardEvent)("keypress", true, true, window,
0, 0, 0, 0,
0, character.charCodeAt(0))
var canceled = !body.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
}
取自here并阅读几乎所有解决方案,但它们不起作用。
注意:我在Firefox和Chrome中工作
答案 0 :(得分:0)
您是否只是尝试在输入中添加文字,但是看起来好像是被幽灵键入了?
function typeToInput(id, str){
var ctr = 0;
var tmr = setInterval(function(){
document.getElementById(id).value += str[ctr];
ctr++;
if(ctr >= str.length) clearInterval(tmr);
}, 250);
}
但是,如果输入得到焦点,你可能想要取消定时器并清除文本..
答案 1 :(得分:0)
已经回答here。
出于安全原因,不允许您触发将导致文本填充输入的事件。在链接的答案中查看解决方法。