Foros del Web » Programando para Internet » Javascript »

Envio de formulario con js no intrusivo

Estas en el tema de Envio de formulario con js no intrusivo en el foro de Javascript en Foros del Web. Buenas a tod@s, estoy intentando crear unos formularios gestionados con js y ajax pero de forma no intrusiva. Es decir, lo que quiero es que ...
  #1 (permalink)  
Antiguo 01/10/2009, 12:20
Avatar de Harris  
Fecha de Ingreso: febrero-2007
Mensajes: 132
Antigüedad: 17 años, 2 meses
Puntos: 0
Envio de formulario con js no intrusivo

Buenas a tod@s, estoy intentando crear unos formularios gestionados con js y ajax pero de forma no intrusiva.
Es decir, lo que quiero es que si el usuario tiene activado el js al pulsar sobre el submit llamará a la función enviar_por_ajax. Si el usuario no tiene js el formulario se enviará a la pagina_destino.php

Código HTML:
<form method="post" action="pagina_destino.php">
<input type="submit" onclick="javascript:enviar_por_ajax()" >
</form> 
El problema es que ahora si el usuario si tiene js, se ejecuta el ajax y luego se envía a pagina_destino, se hace lo mismo dos veces. Lo que quiero es que la propia función enviar_por_ajax envíe la información y evite el envío a pagina_destino. También me vale cualquier otra solución.

Por favor decidme a ver qué se os ocurre, muchas gracias
  #2 (permalink)  
Antiguo 01/10/2009, 15:41
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: Envio de formulario con js no intrusivo

Lo que yo he hecho es:
1. Hacer los formularios para que funcionen mediante la forma tradicional. Sin onclicks ni cosas parecidas.
2. Agregarle una clase especial a los elementos que interaccionan con javascript. Ejemplo: "ajax";
3. Cuando el DOM este listo, ejecutar una funcion para agregar eventos a los elementos que tengan la clase especial :
Código javascript:
Ver original
  1. //uso jquery como framework
  2. $(document).ready(function(){
  3.    $('buttonSubmit.ajax').click(function(){
  4.            $.ajax();
  5.            return false;
  6.     })
  7. //si son links
  8.  
  9. $("a.ajax").each(function(){
  10.         h = $(this).attr("href");
  11.         $(this).attr("href", "#");
  12.         $(this).attr("rel",h);
  13.         $(this).removeClass("ajax").addClass("ajax-ready").click(function(){
  14.                   $.ajax()
  15.          });
  16.     });
  17. });

La idea es identificar que elementos interactuan mediante ajax con el servidor, para que mediante eventos gestiones su interaccion. Recuerda primero html, programacion servidor, programacion cliente.

Saludos.
__________________
I see dead pixels

Última edición por SergeMedina; 01/10/2009 a las 15:47
  #3 (permalink)  
Antiguo 01/10/2009, 16:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Envio de formulario con js no intrusivo

Hola:

El evento asociado al envío del formulario es submit, y como tal basta con enviarle el valor lógico false para evitar su envío, o sea, con una sola línea tendrías resuelto el problema...

<form method="post" action="pagina_destino.php" onsubmit="enviar_por_ajax(); return false">
<input type="submit" />
</form>

O si haces pocos retoques podría ser: onsubmit="return enviar_por_ajax()"... poniendo return false al final del envío por ajax... pero fuera del onreadystatechange()...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 02/10/2009, 02:41
Avatar de Harris  
Fecha de Ingreso: febrero-2007
Mensajes: 132
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Envio de formulario con js no intrusivo

Muchas gracias caricatos es justo lo que necesitaba.
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 16:20.