使用按键模拟输入填充

时间:2015-07-11 20:59:22

标签: javascript javascript-events jscript

假设我们有一个输入,我们想要添加一些文本。

 <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中工作

2 个答案:

答案 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

出于安全原因,不允许您触发将导致文本填充输入的事件。在链接的答案中查看解决方法。