【问题标题】:Input fill with keypress simulation使用按键模拟输入填充
【发布时间】:2015-07-11 20:59:21
【问题描述】:

假设我们有一个输入,我们想向它添加一些文本:

 <form>
First name:<br>
<input type="text" id="thename" name="firstname">
</form> 

简单的事情是使用经典的 element.value... 为输入添加价值。 但是如果我想通过模拟keypress 事件来添加例如“David”呢?

我遵循了以下几种方法:

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

【问题讨论】:

标签: javascript dom-events jscript


【解决方案1】:

您是否只是想在输入中添加文本,但让它看起来好像是由幽灵输入的?

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);
}

不过,如果输入获得焦点,您可能希望取消计时器并清除文本..

【讨论】:

    【解决方案2】:

    已经回复here

    出于安全原因,您不得触发会导致文本填充输入的事件。请参阅链接答案中的解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多