繁体   English   中英

JavaScript onfocus属性和键事件

[英]JavaScript onfocus attribute and key events

我正在尝试在Firefox的文本框中的JavaScript中模拟键输入。 文本框具有onfocus=" this.value='' "属性。 模拟+我的代码可以在以下位置找到

工作代码:

var divy = document.getElementById("eventListener");
divy.focus();

var inputText = '';

for(var i = 0; i < ('asd').length; i++)
{
   var event = document.createEvent('KeyboardEvent');
   event.initKeyEvent ('keydown', true, true, null, false, false, false, false, 0, 0) 
   divy.dispatchEvent(event);

   inputText += ('asd').charAt(i);

   var event = document.createEvent('KeyboardEvent');
   event.initKeyEvent ('keypress', true, true, null, false, false, false, false, 0, ('asd').charCodeAt(i)) 
   divy.dispatchEvent(event);
   divy.value = inputText;

   var event = document.createEvent('KeyboardEvent');
   event.initKeyEvent ('keyup', true, true, null, false, false, false, false, 0, 0) 
   divy.dispatchEvent(event);
}


divy.blur();

我的问题是,如何正确模拟输入(没有jquery!),以便第二个文本框没有空值。 而且,由于仅引发一次焦点事件,为什么每次都删除该值。

更新:

正如我以为divy.focus(); 方法可能需要一些时间来执行属性中的onfocus事件,我使用以下方法设置了超时以发送键事件:

windows.setTimeout("fireKeys2()", 5000);

但这似乎也不起作用。 该测试位于http://jsfiddle.net/hPBNA/23/

更新2:

我自己解决了这个问题,好像element.value已设置为''(element.value =”)element.setAttribute('value',someText)无法更改它。 访问element.value属性反而给了我正确的结果。

在Firefox 22中进行了测试。不知道它是否可以在其他版本上重现。

我自己弄清楚了这个问题,好像element.value已经设置为''(element.value =”),element.setAttribute('value',someText)无法更改它。 访问element.value属性反而给了我正确的结果。

在Firefox 22中进行了测试。不知道它是否可以在其他版本上重现。

约翰

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM