2010-10-13 20 views
12

Al usar el complemento Validación de JQuery, estoy intentando llamar al método .valid() sin los efectos secundarios de mostrar mensajes de error en la pantalla. He intentado una serie de escenarios sin éxito, mi última de ellas:Validación Jquery: ¿la llamada es válida sin mostrar errores?

$('#signup').validate({ 
      showErrors: function() { return; }, 
      errorElement: "", 
      errorClass: "", 
      errorPlacement: function() { }, 
      invalidHandler: function() { }, 
      highlight: function(element, errorClass) { }, 
      unhighlight: function(element, errorClass) { } 
     }); 

$('#displayPurposes').text("Valid: " + $("#EMailAddress_EmailAddress").valid()); 

Mientras la llamada .valid() funciona correctamente todavía está causando efectos secundarios de mostrar mensajes de error.

No quiero que esto suceda, ayuda por favor.

Respuesta

-4

Bien, en lugar de tratar de deshabilitar cualquier error en la colocación del plugin, puede usar CSS para 'forzar' a ocultar los elementos de crear mensajes de error. Algo así como:

label.myvalidationclass { display: none !important; } 

Dónde myvalidationclass es o bien el nombre de la clase de error por defecto o en su propio.

Soy consciente de que no es una solución muy buena, pero en mi opinión, mostrar los mensajes de error es una de las características principales del complemento.

d.

+0

disculpas por la muy tardía aceptación, pero si recuerdo lo que hice terminar con algo similar a la piratería de la CSS . – soul

47

Puede hacerlo sin usar hacks de CSS llamando al checkForm().

var isValid = $('#signup').validate().checkForm(); // true|false 

checkForm() no desencadena cambios de interfaz de usuario.

Sin embargo, hay un efecto secundario. Los campos de formulario ahora se validarán en cambio/enfoque/desenfoque, lo que puede ser indeseable. Puede desactivar este comportamiento restableciendo el submitted objeto:

$('#signup').validate().submitted = {}; 

que se traduce en:

var validate = $('#signup').validate(); // Get validate instance 
var isValid = validate.checkForm(); // Valid? 
validate.submitted = {}; // Reset immediate form field checking mode 
+2

+1: Esta es una solución mucho mejor, y permite la flexibilidad de validar solo sin mensajes cuando sea necesario. –

+1

Esta es la solución que utilicé y que puedo recomendar a todos. –

+1

¿Hay alguna forma de averiguar si una determinada entrada es válida sin resaltarla? – simaglei

Cuestiones relacionadas