Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] No funciona fireEvent

Estas en el tema de No funciona fireEvent en el foro de Javascript en Foros del Web. Hola, Hice una versión simplificada del problema que tengo. Estoy intentando hacer un script que cuando se presione el boton 2, se dispare el evento ...
  #1 (permalink)  
Antiguo 12/09/2014, 08:20
 
Fecha de Ingreso: agosto-2014
Ubicación: Santiago
Mensajes: 15
Antigüedad: 9 años, 8 meses
Puntos: 0
Exclamación No funciona fireEvent

Hola,
Hice una versión simplificada del problema que tengo.
Estoy intentando hacer un script que cuando se presione el boton 2, se dispare el evento change de un campo input, tal como cuando el usuario hace la modificación manualmente.
el campo input así como los dos botones estan dentro de un form de una matriz, al cual se accede elemento por elemento, asi los elemento 0 al 3 son cada uno de los campos input, el elemento 4 es el primer botón y el elemento 5 es el segundo botón.
Cuando corro el programa en Explorer, me aparece un cuadro que dice "Error: El objeto no acepta la propiedad o el método 'fireEvent'"

Adjunto HTML y JS (que se llama JS_Headache.js)

<script src="JS_Headache.js" type="text/javascript"></script>
<html>
<head>
<meta charset="utf-8" />
<h1>Habitaciones</h1>
</head>
<body>
<form id="habitaciones-disponibles-form">
<table class="matriz-tabla">
<tr>
<td colspan="1"></td>
<td class="Mes" colspan="2">
Octubre
2014
</td>
</tr>
<tr>
<td colspan="1"></td>
<td class="matriz-dia">
05
</td>
<td class="matriz-dia">
06
</td>
</tr>
<tr>
<td>
<a href="link_depto_1.html">
Disponibilidad Propiedad 1
</a>
</td>
<td class="">
<input class="habitaciones-disponibles pequena-input"
type="text"
value="0" />
</td>
<td class="">
<input class="habitaciones-disponibles pequena-input" type="text" value="0" />
</td>
</tr>
<tr>
<td>
<a href="link_depto_2.html">
Disponibilidad Propiedad 2
</a>
</td>
<td class="">
<input class="habitaciones-disponibles pequena-input" type="text" value="0" />
</td>
<td class="">
<input class="habitaciones-disponibles pequena-input" type="text" value="2" />
</td>
</tr>
</table>
<button type="submit"> Boton 1 </button>
<button type="submit"> Boton 2 </button>
</form>
</body>
</html>


window.onload = function ()
{
chequea_js();
<!--document.getElementsByClassName("habitaciones-disponibles")(0).onchange=evento_tipo_1;-->
document.getElementById("habitaciones-disponibles-form")(0).onchange=evento_tipo_1;
document.getElementById("habitaciones-disponibles-form")(4).onclick=evento_tipo_1;
document.getElementById("habitaciones-disponibles-form")(5).onclick=clic_2;
}
function chequea_js()
{
alert ("Comienzo de todo")
}
function evento_tipo_1(elEvento)
{
var evento=elEvento || window.event;

evento.preventDefault();
if (evento.type=='change')
{
alert ("Evento Change Disparado");
}
else
{
alert ("Evento: "+evento.srcElement.innerText +"-> "+evento.type)
}

}
function clic_2(elEvento)
{
var evento=elEvento || window.event;
evento.preventDefault();
alert ("Evento: "+evento.srcElement.innerText +"-> "+evento.type)
document.getElementById("habitaciones-disponibles-form")(0).value="3";
var evt = document.createEventObject;
document.getElementsByClassName("habitaciones-disponibles")(0).fireEvent("onchange",evt);
}
  #2 (permalink)  
Antiguo 14/09/2014, 20:29
 
Fecha de Ingreso: agosto-2014
Ubicación: Santiago
Mensajes: 15
Antigüedad: 9 años, 8 meses
Puntos: 0
(Resuelto): No funciona fireEvent

Encontré la solución, aunque fue leyendo mucho. Lo malo es que no encontré la causa de porque firevent no funciona

La solución es no usar firevent, sino que usar dispatchEvent.
La funcion clic_2 debiese quedar asi:

function clic_2(elEvento)
{
var evento=elEvento || window.event;
evento.preventDefault();
document.getElementById("rooms-to-sell-grid")(0).value="3";
alert ("Evento: "+evento.srcElement.innerText +"-> "+evento.type);
var evt = document.createEvent('UIEvents');
evt.initEvent("change", true, true);
document.getElementsByClassName("rooms-to-sell")(0).dispatchEvent(evt);


}

Etiquetas: html, input, js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:15.