Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Enviar formulario con evento onblur

Estas en el tema de Enviar formulario con evento onblur en el foro de Jquery en Foros del Web. Hola, por favor necesito saber como puedo mandar el form6 del código que pongo con el evento onblur. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original ...
  #1 (permalink)  
Antiguo 17/02/2014, 18:00
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Enviar formulario con evento onblur

Hola, por favor necesito saber como puedo mandar el form6 del código que pongo con el evento onblur.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3.    
  4.     $('#form6').submit(function(event) {
  5.        
  6.             if (document.form6.edAveria.value.length==''){
  7. alert("¡Complete los campos!")
  8.        document.form6.edAveria.focus()
  9.        return 0;
  10. }
  11.     if (document.form6.TipoIntervencion.value.length==''){
  12. alert("¡Complete los campos!")
  13.        document.form6.TipoIntervencion.focus()
  14.        return 0;
  15. }
  16. if (document.form6.CodigoFinalizacion.value.length==''){
  17. alert("¡Complete los campos!")
  18.        document.form6.CodigoFinalizacion.focus()
  19.        return 0;
  20. }
  21.                 if (document.form6.edfecha.value.length==''){
  22. alert("¡Complete los campos!")
  23.        document.form6.edfecha.focus()
  24.        return 0;
  25. }
  26.  
  27.     if (document.form6.edfechaFin.value.length==''){
  28. alert("¡Complete los campos!")
  29.        document.form6.edfechaFin.focus()
  30.        return 0;
  31. }
  32.  
  33. if (document.form6.dtFecharecepcion.value.length==''){
  34. alert("¡Complete los campos!")
  35.        document.form6.dtFecharecepcion.focus()
  36.        return 0;
  37. }
  38.  
  39. if (document.form6.edHoraInicio.value.length==''){
  40. alert("¡Complete los campos!")
  41.        document.form6.edHoraInicio.focus()
  42.        return 0;
  43. }
  44.  
  45. if (document.form6.edHoraFin.value.length==''){
  46. alert("¡Complete los campos!")
  47.        document.form6.edHoraFin.focus()
  48.        return 0;
  49. }
  50.  
  51. if (document.form6.edTiempoIntervencion.value.length==''){
  52. alert("¡Complete los campos!")
  53.        document.form6.edTiempoIntervencion.focus()
  54.        return 0;
  55. }
  56.  
  57.      var datos = $(this).serialize();  
  58.       event.preventDefault()
  59.       $.ajax(
  60.         {
  61.             url:'ins_detatifac.php',
  62.             type:'POST',
  63.             data:datos,
  64.             beforeSend:function(objeto){
  65.                 $('#carga').css({display:'block'});
  66.             },
  67.             complete:function(){
  68.                 $('#carga').css('display','none');
  69.                 },
  70.             success: function(data) {
  71.                 $('#result').html(data);
  72.             }
  73.            
  74.            
  75.         });
  76.        
  77.     });
  78. });
  79. </script>



Y el textarea donde mandaría el formulario con onblur:

Código Javascript:
Ver original
  1. <textarea name="edAveria"  onblur="this.value=this.value.toUpperCase();v28(this.value, this.name);" cols="22" rows="8"><?php echo $row_Recordset2['edAveria']; ?></textarea>

Gracias
  #2 (permalink)  
Antiguo 17/02/2014, 18:23
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Enviar formulario con evento onblur

Utiliza el método blur para detectar la pérdida del enfoque en el elemento y con el método trigger, disparas el evento submit en el formulario. Un pequeño ejemplo:

Código HTML:
Ver original
  1. <form id = "formulario" action = "ejemplo.php">
  2.     Dato: <input type = "text" name = "buscar" />
  3.     <input type = "submit" value = "Buscar" />
  4. </form>
  5.  
  6. <textarea id = "salida"></textarea>

Código Javascript:
Ver original
  1. $("#formulario").submit(function(e){
  2.     e.preventDefault();
  3.     $.ajax({
  4.         url: $(this).prop("action"),
  5.         data: $(this).serialize(),
  6.         success: function(response){
  7.             $("#salida").val(response);
  8.         }
  9.     });
  10. });
  11.  
  12. $("#salida").blur(function(){
  13.     $("#formulario").trigger("submit");
  14. });

En el <textarea> se visualizará la respuesta del servidor, es decir, el resultado del procesamiento del dato enviado desde el formulario mediante el método ajax.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 18/02/2014, 03:50
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Enviar formulario con evento onblur

Cita:
Iniciado por Alexis88 Ver Mensaje
Utiliza el método blur para detectar la pérdida del enfoque en el elemento y con el método trigger, disparas el evento submit en el formulario. Un pequeño ejemplo:

Código HTML:
Ver original
  1. <form id = "formulario" action = "ejemplo.php">
  2.     Dato: <input type = "text" name = "buscar" />
  3.     <input type = "submit" value = "Buscar" />
  4. </form>
  5.  
  6. <textarea id = "salida"></textarea>

Código Javascript:
Ver original
  1. $("#formulario").submit(function(e){
  2.     e.preventDefault();
  3.     $.ajax({
  4.         url: $(this).prop("action"),
  5.         data: $(this).serialize(),
  6.         success: function(response){
  7.             $("#salida").val(response);
  8.         }
  9.     });
  10. });
  11.  
  12. $("#salida").blur(function(){
  13.     $("#formulario").trigger("submit");
  14. });

En el <textarea> se visualizará la respuesta del servidor, es decir, el resultado del procesamiento del dato enviado desde el formulario mediante el método ajax.

Saludos

Gracias Alexis, pero si mando el formulario al terminar de escribir en el textarea con blur para que poner ?:

<input type = "submit" value = "Buscar" />


Con esto bastaría?

Código HTML:
Ver original
  1. <form id = "formulario" action = "ejemplo.php">
  2.    <textarea id = "salida"></textarea>
  3. </form>

Lo he intentado así pero no va:
Código Javascript:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
  5. <title>mi bug</title>
  6. </head>
  7. <script type="text/javascript" >
  8. $("#formulario").submit(function(e){
  9.     e.preventDefault();
  10.     $.ajax({
  11.         url: $(this).prop("action"),
  12.         data: $(this).serialize(),
  13.         success: function(response){
  14.             $("#contenido").val(response);
  15.         }
  16.     });
  17. });
  18.    $("#salida").blur(function(){
  19.     $("#formulario").trigger("submit");
  20. });
  21. </script>
  22. <body>
  23. <form id = "formulario" action = "ins1_avisos.php">
  24.   <table width="79%">
  25.             <tr>
  26.               <th scope="col" width="57">Teléfonos</th>
  27. <th scope="col" width="52"><input name="telefonos" id="telefonos"  type="text" size="9" maxlength="9"/></th>
  28.  
  29.              <th scope="col" width="46">Nombre</th>
  30.     <th scope="col" width="88"><input name="name" id="name" type="text" size="35"/>
  31.               </th>
  32.               <th scope="col" width="46">Apellidos</th>
  33.   <th scope="col" width="403"><input name="apellidos" id="apellidos" type="text" size="20" /></th>
  34.  
  35.     <th scope="col"><textarea id = "salida"></textarea></th>
  36.             </tr>
  37.            
  38.            
  39. </table>
  40. <input type="hidden" name="MM_insert" value="form1" />
  41.  
  42. </form>
  43. <div id="contenido"></div>
  44. </body>
  45. </html>


Última edición por satjaen; 18/02/2014 a las 07:05
  #4 (permalink)  
Antiguo 18/02/2014, 08:16
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Enviar formulario con evento onblur

Claro, inicialmente lo había puesto sin el botón y luego lo edité porque también hay que dejar la posibilidad de utilizar el botón que es el medio natural por el cual se puede hacer el envío. Particularmente, encuentro un tanto inútil hacerlo cuando se pierde el enfoque en el <textarea>, el usuario puede haberle quitado el enfoque por error y habrá enviado la información cuando todavía no quería hacerlo. Como programador, siempre tienes que pensar en todos los casos posibles.

Un consejo más: No utilices tablas para alinear los elementos, para eso están las hojas de estilos, las tablas deben ser usadas únicamente para listar datos.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 18/02/2014, 09:35
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Enviar formulario con evento onblur

Ok, pero el código no funciona:

Código Javascript:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
  5. <title>mi bug</title>
  6. </head>
  7. <script type="text/javascript" >
  8. $("#formulario").submit(function(e){
  9.     e.preventDefault();
  10.     $.ajax({
  11.         url: $(this).prop("action"),
  12.         data: $(this).serialize(),
  13.         success: function(response){
  14.             $("#contenido").val(response);
  15.         }
  16.     });
  17. });
  18.    $("#salida").blur(function(){
  19.     $("#formulario").trigger("submit");
  20. });
  21. </script>
  22. <body>
  23. <form id = "formulario" action = "ins1_avisos.php">
  24.   <table width="79%">
  25.             <tr>
  26.               <th scope="col" width="57">Teléfonos</th>
  27. <th scope="col" width="52"><input name="telefonos" id="telefonos"  type="text" size="9" maxlength="9"/></th>
  28.  
  29.              <th scope="col" width="46">Nombre</th>
  30.     <th scope="col" width="88"><input name="name" id="name" type="text" size="35"/>
  31.               </th>
  32.               <th scope="col" width="46">Apellidos</th>
  33.   <th scope="col" width="403"><input name="apellidos" id="apellidos" type="text" size="20" /></th>
  34.  
  35.     <th scope="col"><textarea id = "salida"></textarea></th>
  36.             </tr>
  37.            
  38.            
  39. </table>
  40. <input type="hidden" name="MM_insert" value="form1" />
  41.  
  42. </form>
  43. <div id="contenido"></div>
  44. </body>
  45. </html>


Y así ?

Código Javascript:
Ver original
  1. <script type="text/javascript" >
  2. $(document).ready(function(){
  3.     //insertando input por Jquery
  4.  
  5.     $('textarea').live('blur', function() {            
  6.              $("#formulario").trigger("submit");
  7.     });
  8.    
  9.    
  10.    
  11. })      
  12. </script>

Última edición por satjaen; 18/02/2014 a las 09:50
  #6 (permalink)  
Antiguo 18/02/2014, 11:02
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Enviar formulario con evento onblur

El ejemplo que inicialmente te mostré funciona perfectamente, lo probé antes de publicarlo y marcha de maravilla. Los Divs no tienen la propiedad value, por eso no se muestra la respuesta de la petición asíncrona en él, en su lugar debes usar el método html.

Código Javascript:
Ver original
  1. $("#contenido").html(response);

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 18/02/2014, 12:25
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Enviar formulario con evento onblur

Alexis, no he dudado de tu código sino del mio. Es que no me funciona, escribo algo en el textarea y no hace nada. La tabla es para el ejemplo. Gracias por tu consejo.

Código Javascript:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
  5. <title>mi bug</title>
  6. </head>
  7. <script type="text/javascript" >
  8. $("#formulario").submit(function(e){
  9.     e.preventDefault();
  10.     $.ajax({
  11.         url: $(this).prop("action"),
  12.         data: $(this).serialize(),
  13.         success: function(response){
  14.            $("#contenido").html(response);
  15.         }
  16.     });
  17. });
  18.    $("#salida").blur(function(){
  19.     $("#formulario").trigger("submit");
  20. });
  21. </script>
  22. <style>
  23. .carga1{
  24. cursor:pointer;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;background-repeat: no-repeat;background-position:center;background-size:30%;background-color:rgba(0,0,0,0.5);width:300px;color:#fff;text-align:center;height:100px;padding:52px 12px 12px 12px;position:fixed;top:30%;left:40%;z-index:6;
  25. }
  26. </style>
  27.  
  28. <body>
  29. <form id = "formulario" action = "ins1_avisos.php">
  30.   <table width="79%">
  31.             <tr>
  32.               <th scope="col" width="57">Teléfonos</th>
  33. <th scope="col" width="52"><input name="telefonos" id="telefonos"  type="text" size="9" maxlength="9"/></th>
  34.  
  35.              <th scope="col" width="46">Nombre</th>
  36.     <th scope="col" width="88"><input name="name" id="name" type="text" size="35"/>
  37.               </th>
  38.               <th scope="col" width="46">Apellidos</th>
  39.   <th scope="col" width="403"><input name="apellidos" id="apellidos" type="text" size="20" /></th>
  40.  
  41.     <th scope="col"><textarea id = "salida"></textarea></th>
  42.             </tr>
  43.            
  44.            
  45. </table>
  46. <input type="hidden" name="MM_insert" value="form1" />
  47.  
  48. </form>
  49. <div id="contenido" class="carga1"></div>
  50. </body>
  51. </html>
  #8 (permalink)  
Antiguo 18/02/2014, 12:49
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Enviar formulario con evento onblur

Es que no va a suceder algo si solamente escribes en el <textarea>, el evento blur se ejecuta cuando el elemento pierde el enfoque, no cuando lo tiene. Luego de escribir, quítale el enfoque y se ejecutará la función. Por otro lado, ¿qué realizas con los datos en el archivo insl_avisos.php?, depende de lo que hagas ahí, se mostrará algo en el Div.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 18/02/2014, 13:20
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Enviar formulario con evento onblur

Ok,

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3.    
  4.     $("#salida").blur(function(){
  5.       $("#form1").trigger("submit");
  6.        });
  7.    
  8.  
  9.     $('#form1').submit(function(event) {
  10.      var datos = $(this).serialize();  
  11.       event.preventDefault()
  12.       $.ajax(
  13.         {
  14.             url:'ins1_avisos.php',
  15.             type:'POST',
  16.             data:datos,
  17.             beforeSend:function(objeto){
  18.                 $('#carga').css({display:'block'});
  19.             },
  20.             complete:function(){
  21.                 $('#carga').css('display','none');
  22.                 },
  23.             success: function(data) {
  24.                 $('#result').html(data);
  25.  
  26.             }
  27.         });
  28.     });
  29. });
  30. </script>
  #10 (permalink)  
Antiguo 18/02/2014, 13:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Enviar formulario con evento onblur

¿Así funciona o qué sucede?, por otro lado, todavía no has respondido a mi pregunta anterior, ¿qué sucede en el archivo ins1_avisos.php y qué resultado devuelve?.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 18/02/2014, 14:04
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Enviar formulario con evento onblur

Si Alexis el resultado es correcto. Muchas gracias
  #12 (permalink)  
Antiguo 18/02/2014, 14:55
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Enviar formulario con evento onblur

Una pregunta Alexis, con el evento onchange en un select se haría igual ?
Código Javascript:
Ver original
  1. $("#salida").onchange(function(){
Gracias
  #13 (permalink)  
Antiguo 18/02/2014, 15:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Enviar formulario con evento onblur

En jQuery existe el método change y sí, el resultado sería el mismo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #14 (permalink)  
Antiguo 18/02/2014, 18:20
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Enviar formulario con evento onblur

Cita:
Iniciado por Alexis88 Ver Mensaje
En jQuery existe el método change y sí, el resultado sería el mismo.

Saludos
Alexis lo estoy intentando así pero no sale. Quiero mandar el formulario cuando selecciono el valor 2.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3.  
  4. $( "#target" ).change(function() {
  5. $("#form6").trigger("submit");
  6. });
  7.  
  8.     $('#form6').submit(function(event) {
  9.      var datos = $(this).serialize();  
  10.       event.preventDefault()
  11.       $.ajax(
  12.         {
  13.             url:'ins1_avisos.php',
  14.             type:'POST',
  15.             data:datos,
  16.             beforeSend:function(objeto){
  17.                 $('#carga').css({display:'block'});
  18.             },
  19.             complete:function(){
  20.                 $('#carga').css('display','none');
  21.                 },
  22.             success: function(data) {
  23.                 $('#result').html(data);
  24.  
  25.             }
  26.         });
  27.     });
  28.   });
  29. </script>


Código Javascript:
Ver original
  1. <select name="TipoIntervencion" id="TipoIntervencion" >
  2.           <option value=''>SELECCIONE</option>
  3.           <option value='1'>Factura</option>
  4.           <option id="target"  value='2'>Albaran</option>
  5.      </select>
  #15 (permalink)  
Antiguo 18/02/2014, 18:27
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Enviar formulario con evento onblur

¿Te has dado cuenta que el <select> tiene por Id "TipoIntervencion" pero en el código estás aplicando el método change al elemento de Id "target"?

Hazlo así:

Código Javascript:
Ver original
  1. $( "#TipoIntervencion" ).change(function() {
  2.     if ($(this).val() == 2)
  3.         $("#form6").trigger("submit");
  4. });

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #16 (permalink)  
Antiguo 18/02/2014, 18:30
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Enviar formulario con evento onblur

Cita:
Iniciado por Alexis88 Ver Mensaje
¿Te has dado cuenta que el <select> tiene por Id "TipoIntervencion" pero en el código estás aplicando el método change al elemento de Id "target"?
Si pero si le pongo el Id "target" al select me manda el formulario cuando selecciono cualquiera de los dos valores y yo solo lo quiero que lo mande con el valor 2.

Perdona que he debido de contestar al mismo tiempo que tú.
Gracias
  #17 (permalink)  
Antiguo 18/02/2014, 18:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Enviar formulario con evento onblur

¿Y ya probaste con el último código que te di?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #18 (permalink)  
Antiguo 18/02/2014, 19:10
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Enviar formulario con evento onblur

Cita:
Iniciado por Alexis88 Ver Mensaje
¿Y ya probaste con el último código que te di?
Si y va perfecto.
Muchas gracias

Etiquetas: evento, formulario, onblur
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 04:17.