【问题标题】:How to type on an input box via JavaScript for IE如何通过 IE 的 JavaScript 在输入框上键入内容
【发布时间】:2012-06-18 13:24:42
【问题描述】:

试图弄清楚如何在 IE8 和 9 的输入框中键入(通过未设置值的事件)。我查看了网络上的一些示例 - 但无法让它们中的任何一个工作。 (我不想依赖其他库的JQuery)

这是我目前所拥有的:

<form>
  <input type="text" id="txtfld" /> 
  <input type="button" onclick="typeKey()" /> 
</form>
<script>

function typeKey(){
    var  txtField = document.getElementById('txtfld');
    var evt= document.createEventObject();
    evt.keyCode=68;
    txtField.fireEvent('onkeypress', evt);
}
</script>

它不起作用,它也不会出错。

【问题讨论】:

  • 为什么需要这样调用事件呢?你能不能只说 document.getElementById('txtField').value = U;运行事件()
  • 你需要解雇keypress,而不是onkeypress
  • @theedam 这只是我的一个要求。这应该是可能的,我想学习如何让它发挥作用。
  • @FlorianMargaine "keypress" 在 IE 上不起作用。你需要 onkeypress msdn.microsoft.com/en-us/library/ie/ms536390(v=vs.85).aspx

标签: javascript javascript-events


【解决方案1】:

试试这个功能,fire(document.getElementById('txtfld'),'keypress',68):

function fire(el,evttype,code) {
   if (document.createEvent) {
     var evt = document.createEvent('HTMLEvents');
     evt.initEvent( evttype, false, false);
     evt.charCode= evt.keyCode = code;
     el.dispatchEvent(evt);
   } else if (document.createEventObject) {
     var evt = document.createEventObject();
     evt.charCode= evt.keyCode = code;
     el.fireEvent('on' + evttype, evt);
   }
}

here an example

祝你好运:)

【讨论】:

  • 代码缺少“document.createEventObject”案例的 evt 定义。即使将其定义为: var evt = document.createEventObject;还是不行
  • 你是对的,我忘记调用 createEventObject 并传递 evt。现在看看代码,我在 IE 上试过这个例子,它工作正常。
  • 你在尝试最后一个例子吗? jsfiddle.net/HfU6Q/4 ?当你按下 Go 按钮时你看到了什么?我可以看看你的代码吗?你是如何实现这个功能的?
  • 实际上它正在工作..我只是希望文本框也会选择值,但事实并非如此。
猜你喜欢
  • 1970-01-01
  • 2020-10-24
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 2012-08-10
相关资源
最近更新 更多