我试图在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中测试过。不知道它是否可以在其他版本上重现。
答案 0 :(得分:0)
我自己想出了问题,似乎如果将element.value设置为''这种方式(element.value =''),element.setAttribute('value',someText)无法改变它。访问element.value属性改为给了我正确的结果。
在Firefox 22中测试过。不知道它是否可以在其他版本上重现。
约翰