2012-08-28 43 views
5

Estoy usando jquery y validar para validar mi formulario. En lugar de añadir un elemento al campo faltante Estoy añadiendo un borde al elemento uso de esta opción errorPlacementcómo borrar el error al usar jquery validate y personalizado errorPlacement

$("#signup-form").validate({ 
     submitHandler: function(form) { 
     form.submit(); 
    }, 
    errorPlacement: function(error, element) { 
     element.css("border", "solid 1px red"); 
    }      
}); 

Lo único que parece que no puede averiguar es cómo borrarlos cuando válida?

Así que comencé con el código anterior. Luego intenté y estoy confundido con los resultados. Si no tengo la opción success: cuando un campo falla, agrega la clase con éxito. Pero tan pronto como agregue la opción success todos los campos requeridos están obteniendo esa clase, y si inspecciono el elemento veo <input class="required invalid valid"> entonces estoy haciendo algo incorrectamente.

  $("#signup-form").validate({ 
       submitHandler: function(form) { 
        // do other stuff for a valid form 
        //form.submit(); 
       }, 
       errorPlacement: function(error, element) { 
        element.addClass("invalid"); 
       },   
       success: function(error) { 
        // change CSS on your element(s) back to normal 
       },      
       debug:true 
      }); 
+0

Normalmente, de forma predeterminada, el error se borra solo. Explique más y/o muestre una demostración de su problema. – Sparky

+0

estoy agregando el código de arriba. así que cuando un campo falla en su lugar, si agrega un nuevo elemento, simplemente estoy cambiando el borde del campo faltante a rojo. si pongo la información y dejo el campo, todavía tiene el borde. – randy

+1

Puede consultar la respuesta aquí: http://stackoverflow.com/questions/3518895/jquery-validation-plugin-callback-for-field-success-validation La opción de éxito tiene una devolución de llamada que puede usar para desactivar la etiqueta frontera. – user1512616

Respuesta

6

Usted podría intentar agregar esto a su lista de opciones .validate() ...

success: function(error) { 
    // change CSS on your element(s) back to normal 
} 

Esto debería funcionar de forma dinámica sin un formulario de envío. Tan pronto como se resuelva el error, se ejecutará el código contenido.

Ver documentation.

Cree una demostración de su problema utilizando jsFiddle. Aquí está a blank jsFiddle con .validate() ya incluido y listo para usar.


EDIT

Según OP's jsFiddle, hice estos cambios ...

errorPlacement: function(error, element) { 
     $(element).filter(':not(.valid)').addClass("invalid"); 
    }, 
    success: function(error) { 
     console.log(error); 
     $("#signup-form").find('.valid').removeClass("invalid"); 
    } 

demostración de Trabajo:http://jsfiddle.net/u3Td3/6/

secundarios notas: También tenía algo de HTML iss ues. Debe "cerrar automáticamente" sus elementos input con />. Lo mismo para el botón Enviar, cierre automático en lugar de usar un </input>. Consulte validator.w3.org para validar su HTML. Tampoco usaría un table para diseños, use CSS.

+0

agregar comentarios/más código a la descripción – randy

+0

@randy, ya que no puedo ver su HTML o su página, no puedo escribir una solución exacta. Use jsFiddle para crear una demostración de su problema. Aquí está [un jsFiddle en blanco] (http://jsfiddle.net/jLE2s/) con '.validate()' ya incluido y listo para usar. – Sparky

+0

http://jsfiddle.net/paries/u3Td3/1/ – randy

Cuestiones relacionadas