Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/04/2011, 15:43
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Bloquear div mientras se recibe información.

Buenas,

Al final encontré el jquery blockUI que bloquea la pantalla o incluso un div concreto. En mi caso quiero bloquear el div que contiene el formulario mientras se procesa la petición. Esto lo consigo de la siguiente manera.


Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.         $('#contactar').submit( function(){
  3.              $('div#form_contactar').block({
  4.                 message: $('#msgEspera'),
  5.                css: {   border: '0px',
  6.                         backgroundColor:'transparent'
  7.                     },
  8.                 overlayCSS:  {
  9.                                 backgroundColor: '#D5D3D6',
  10.                                 opacity:         0.6
  11.                             }
  12.             });
  13.         });
  14.     });


El problema que tengo es que mi formulario tiene validaciones JS con jquery.validate

Código Javascript:
Ver original
  1. $("#contactar").validate({
  2.         rules:{
  3.             nombre:{required:true,minlength: 3},
  4.             email:{
  5.                 email:true,
  6.                 required:true,
  7.             },
  8.             departamento:{required:true},
  9.             asunto:{required:true,minlength: 5},
  10.             mensaje:{required:true,minlength: 10},
  11.  
  12.             captcha:{required:true,minlength: 6},
  13.         },
  14.         messages:{
  15.             nombre:{
  16.                 required:"Campo obligatorio",
  17.                 minlength: jQuery.format("Demasiado corto {0} caracteres mínimo")
  18.             },
  19.             email:{
  20.                 email:"El correo no es válido",
  21.                 required:"Campo obligatorio"
  22.             },
  23.             departamento:{
  24.                 required:"Campo obligatorio"
  25.             },
  26.             asunto:{
  27.                 required:"Campo obligatorio",
  28.                 minlength: jQuery.format("Demasiado corto {0} caracteres mínimo")
  29.             },
  30.             mensaje:{
  31.                 required:"Campo obligatorio",
  32.                 minlength: jQuery.format("Demasiado corto {0} caracteres mínimo")
  33.             },
  34.             captcha:{
  35.                 required:"Campo obligatorio",
  36.                 minlength: jQuery.format("Mínimo {0} caracteres")
  37.             },
  38.         }
  39.     });

Al tener estas validaciones y al estar declarado que cuando se hace el submit bloqueé el div, me está bloqueando aunque no hayan pasado satisfactoriamente las validaciones, es decir, estando vacio el formulario si pulso enviar, me saltan las validaciones bien pero me bloquea el formulario.

Lo ideal sería que no bloquease el formulario hasta que las validaciones esten correctas y validadas, solo entonces que permita enviar el formulario y se bloquee el div.

¿Sabéis cómo debo hacerlo?

Muchas gracias de antemano!