Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Varlch en 9 Diciembre 2014, 02:02 am



Título: ¿Como se puede realizar una función en javascript al enviar un form?
Publicado por: Varlch en 9 Diciembre 2014, 02:02 am
Pongamos el ejemplo en el que tengo un form sin ninguna acción algo simple
Código
  1. <form action="" method="post">
  2. <input type="text" name="Username"  />
  3. <input type="password" name="Password"  />
  4. <input type="submit" value="Entrar" />
  5. </form>
  6.  
¿como puedo hacer sin tocar el form  que haga una acción antes de enviar por javascript?


Título: Re: ¿Como se puede realizar una función en javascript al enviar un form?
Publicado por: engel lex en 9 Diciembre 2014, 02:17 am
haces un listener (http://www.w3schools.com/js/js_htmldom_eventlistener.asp) al boton submit

pero creo que por lo menos tienes que hacer en el submit del boton un return false para que no se dispare prontamente (aunque puedes alterar el form sobre la marcha con jscript)


Título: Re: ¿Como se puede realizar una función en javascript al enviar un form?
Publicado por: Varlch en 9 Diciembre 2014, 20:26 pm
¿y como puedo hacer que envié datos a otra web?


Título: Re: ¿Como se puede realizar una función en javascript al enviar un form?
Publicado por: engel lex en 9 Diciembre 2014, 20:30 pm
por usando tecnicas AJAX (http://www.w3schools.com/ajax/)... pero tienes que tener el CORS (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) activado en la pagina del script para el que navegador permita peticiones a webs externas (si la web no es tuya olvidalo)


Título: Re: ¿Como se puede realizar una función en javascript al enviar un form?
Publicado por: exploiterstack en 10 Diciembre 2014, 10:21 am
Puedes asignarle un manejador de eventos desde javascript como dice engel lex

document.getElementById("botonFormulario").addEventListener("click", nombreFuncion);

O si usas jQuery puedes hacer uso de un callback...

Respecto esto que dices:

¿y como puedo hacer que envié datos a otra web?

Puedes capturar el evento del botón del formulario o de la tecla de intro(ya que también se pueden enviar el formulario haciendo uso de esta tecla también ;)) una vez capturado cambiaría el action a la pagina que deseas que trate los datos, una vez echo esto obtienes mandas el formulario:

$("form").submit();

En tu caso como el formulario no dispone de action tienes que ingeniártelas un poco mas, para ello puedes crearte un formulario que este oculto(hidden) y tras capturar el evento del envio del formulario es cuando tienes que recoger los campos e insertarlos en el nuevo formulario que has creado oculto(ojo este si que tendrá action) de esta manera sigues enviando los datos por POST.

Luego otra opción seria obtener los datos e enviarlos por AJAX en una petición, en esta petición iría el acction que tu le especifiques.

Saludos!


Título: Re: ¿Como se puede realizar una función en javascript al enviar un form?
Publicado por: Varlch en 12 Diciembre 2014, 21:40 pm
Le he dado miles de vuelta a esto y gracias a la gente del IRC pues tengo algo mas o menos potable aquí esta el paper.
http://pastebin.com/4Nq16Mwb (http://pastebin.com/4Nq16Mwb)