Básicamente estoy tratando de enviar un evento de clic de ratón por encargo a un elemento de entrada de texto usando el siguiente código (ver este jsFiddle):¿Es posible enviar aEvent() un clic del mouse a un elemento <input type = text>?
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);
}
Cuando corro ese código en un elemento de type="checkbox"
funciona perfectamente bien pero no funciona en absoluto cuando se invoca un elemento type="text"
.
Ahora aquí es la definición de initMouseEvent()
en MDN:
event.initMouseEvent(type, canBubble, cancelable, view,
detail, screenX, screenY, clientX, clientY,
ctrlKey, altKey, shiftKey, metaKey,
button, relatedTarget);
Así en el ejemplo anterior screenX, screenY, clientX
y clientY
serían todas 0
(aún así, el código anterior funciona perfectamente bien con casillas de verificación independientemente de su posición). Traté de capturar un evento real y pasar las coordenadas de la pantalla y del cliente al evento cusom made, sin éxito.
Pensé que los elementos de entrada de texto pueden ignorar los eventos personalizados del mouse debido a razones de seguridad, pero element.focus()
tampoco debería funcionar, lo que hace.
¡Cualquier idea o idea sería muy apreciada!
si fuera tú me gustaría considerar el uso de jQuery library y luego el método 'trigger' - funciona muy bien con el navegador cruzado, y hará que su vida sea mucho más fácil :) –
¿Cómo está usted determinando que el clic no funciona? Cuando agrego un controlador 'onclick' a su ejemplo, se activa: http://jsfiddle.net/epevj/11/ ¿Espera obtener el foco? Entonces, ¿por qué no estás usando 'focus()'? – RoToRa