Javascript 设置element.value后引发事件
我试图用javascript填充一个表单,并通过触发各种事件来模拟我键入的表单 以下是我迄今为止所做的工作:Javascript 设置element.value后引发事件,javascript,Javascript,我试图用javascript填充一个表单,并通过触发各种事件来模拟我键入的表单 以下是我迄今为止所做的工作: domElement.value = "123123"; fireKeyEvent(domElement); function fireKeyEvent(ele) { fireSpecificKeyEvent(ele,"keyup"); fireSpecificKeyEvent(ele,"keydown"); fireSpecificKeyEvent(ele,
domElement.value = "123123";
fireKeyEvent(domElement);
function fireKeyEvent(ele) {
fireSpecificKeyEvent(ele,"keyup");
fireSpecificKeyEvent(ele,"keydown");
fireSpecificKeyEvent(ele,"keypress");
}
function fireSpecificKeyEvent(ele, eventName) {
try {
var evObj = document.createEvent('UIEvents');
evObj.initUIEvent( eventName, true, true, window, 1 );
console.log("eleid:"+ele.getAttribute("id"));
console.log("eleValue:"+ele.getAttribute("value"));
ele.dispatchEvent(evObj);
//evObj.keyCode = 93;
ele.dispatchEvent(evObj);
}catch(e) {
console.log(e);
}
}
它在大多数情况下工作正常,但有时在某些输入文本框上失败。keyup、keydown、keydown
足以模拟各种事件
createEvent('UIEvents')
这是正确的实现,还是应该使用keyEvent或KeyBoardEvent
顺便说一句,我正在使用chrome。在我已经使用元素设置了值之后,有人能给我举一个keyEvent或KeyBoardEvent的例子吗。value
编辑:
这些事件似乎没有填写表单并通过此链接提交:
缺少什么。不,
keyup
和keydown
不足以触发所有类型的事件,它只触发那些事件,特别是,没有其他事件,如粘贴
,输入
,更改
,单击
或任何其他可能有事件处理程序的事件。因此,我可以添加更改,输入并单击fireKeyevent方法(),或者它们的处理方式不同。您的确切目标是什么?这里没有特定目标,我只想处理各种表单输入。这有时可能发生。我甚至设置了input.value,但它们并没有真正设置,因为附加到它的事件不会触发。尝试填写此网站的表单,然后按login。它不会检测到你输入的任何东西