Foros del Web » Programando para Internet » Javascript »

Como se disparan los eventos desde un formulario

Estas en el tema de Como se disparan los eventos desde un formulario en el foro de Javascript en Foros del Web. Hola, es mi primera vez aqui. Tengo el siguiente desafio (problema) estoy intentando controlar un sitio web para ingresar los datos en un excel y ...
  #1 (permalink)  
Antiguo 25/08/2014, 13:34
 
Fecha de Ingreso: agosto-2014
Ubicación: Santiago
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Como se disparan los eventos desde un formulario

Hola,
es mi primera vez aqui. Tengo el siguiente desafio (problema)
estoy intentando controlar un sitio web para ingresar los datos en un excel y luego que el programa haga todos los click necesarios para hacer esto de forma automatica.
Hasta aqui todo bien, ya hice el 95% de lo que quería con VBA. Peeeeroooo cuando llego al final en el maldito boton "Guardar Cambios" este botón no tiene nada: no tiene nombre, el form de donde viene no tiene "action", no tiene un link href, etc.
Investigando identifique el control a traves del form que lo contiene y es algo asi.
Document.getElementsByClassName("clase_con_datos") (0)->Celda del formulario con datos
Document.getElementsByClassName("clase_con_datos") (1)->Celda del formulario con datos
Document.getElementsByClassName("clase_con_datos") (2)->Boton Guardar Cambios.
Entonces probé lo que siempre resultaba:
Document.getElementsByClassName("clase_con_datos") (2).Click

y no hizo nada...

Luego de investigar unos días llegue a que tiene un código JAVA SCRIPT asociado, pero no entiendo como es llamado. Además esta en un archivo aparte (supongo que esto es irrelevante)
El resumen del código es el siguiente:

(document).ready(function () {
...



var updatedInputs = [];
$('.matrix-table').on('change', 'clase_con_datos_de_entrada', function () {
updatedInputs.push($(this));
})

$('clase_con_datos').submit(function (event) {
event.preventDefault();
$('clase_con_datos_de_entrada').prop('disabled', true);
var inventory = new reservas.Inventory();

});
});
La duda es como lo hago para llamar a este procedimiento de Java Script ($('clase_con_datos').submit) . Intento llamarlo asi:
Document.getElementsByClassName("clase_con_datos") .submit

y tampoco hace nada.
Se me ocurre que como la clase pertenece a Document.Ready debiese llamar al código de evento desde una clase superior o algo asi, pero la verdad no se como disparar el evento.
Además cuando corro mi programa modifico la '.matrix-table' pero no se si se esta disparando ese evento a esa parte.
  #2 (permalink)  
Antiguo 30/08/2014, 01:46
 
Fecha de Ingreso: agosto-2014
Ubicación: Chile
Mensajes: 9
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Como se disparan los eventos desde un formulario

Hola, te sale más facil identificar el nombre/id del formulario y mediante javascript hacer una llamada a submit()

EJ:
var formulario = document.getElementById("form1");
formulario.submit();
  #3 (permalink)  
Antiguo 31/08/2014, 20:27
 
Fecha de Ingreso: agosto-2014
Ubicación: Santiago
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Como se disparan los eventos desde un formulario

Hola, muchas gracias por tu ayuda.

La verdad es que eso no funciono.
Ya investigue más y el problema era que el código llamado es de JQuery. También identifique que el problema no es que no funcione el llamado a Submit, sino que este es ignorado. Se ignora por que para que funcione hay que llamar al procedimiento previo
$('.matrix-table').on('change', 'clase_con_datos_de_entrada', function ()

y aqui estoy noqueado.

No se como llamar al onchange. Pensaba que por modificar 'clase_con_datos_de_entrada' se llamaría, pero no fue asi.
Para modificarlo hice:
WebBrowser1.Document.getElementsByClassName("clase _con_datos_de_entrada")("indice_de_dato_modificado ").Value=2

pero no se dispara el evento onchange

Etiquetas: eventos, javascript+html, webbrowser
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 11:08.