Basically I'm trying to dispatch a custom made mouse click event to a text input element using the following code (see this jsFiddle):
function simulateClick(id) {
var clickEvent = document.createEvent("MouseEvents");
clickEvent.initMouseEvent("click", true, true, window, 1, 0, 0, 0, 0,
false, false, false, false, 0, null);
var element = document.getElementById(id);
element.dispatchEvent(clickEvent);
}
When I run that code on a type="checkbox"
element it works perfectly fine but it doesn't work at all when called on a type="text"
element.
Now here's the definition of initMouseEvent()
on MDN:
event.initMouseEvent(type, canBubble, cancelable, view,
detail, screenX, screenY, clientX, clientY,
ctrlKey, altKey, shiftKey, metaKey,
button, relatedTarget);
So in the above example screenX, screenY, clientX
and clientY
would all be 0
(still, the above code works perfectly fine with checkboxes regardless of their position). I tried capturing a real event and passing the screen and client coordinates to the cusom made event, to no avail.
I though maybe text input elements ignore custom mouse events due to security reasons, but then element.focus()
should't work either, which it does.
Any ideas or insights would be greatly appreciated!
See Question&Answers more detail:
os