JavaScript onfocus属性和键事件

时间:2013-07-13 12:04:41

标签: javascript events firefox focus

我试图在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已设置为&#39;&#39;这种方式(element.value =&#39;&#39;)element.setAttribute(&#39; value&#39;,someText)无法更改它。访问element.value属性改为给了我正确的结果。

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

1 个答案:

答案 0 :(得分:0)

我自己想出了问题,似乎如果将element.value设置为''这种方式(element.value =''),element.setAttribute('value',someText)无法改变它。访问element.value属性改为给了我正确的结果。

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

约翰