2010-10-13 14 views
12

Utilizzando il plug-in di convalida JQuery, sto cercando di chiamare il metodo .valid() senza gli effetti collaterali della visualizzazione dei messaggi di errore sullo schermo. Ho provato un certo numero di scenari senza successo, il mio ultimo dei quali:Convalida Jquery: chiama valido senza visualizzare errori?

$('#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()); 

Mentre la chiamata .valid() funziona correttamente è ancora causando effetti collaterali di visualizzazione dei messaggi di errore.

Non voglio che ciò accada, aiuto per favore.

risposta

-4

Bene invece di provare a disabilitare qualsiasi posizione di errore effettuata dal plugin, è possibile utilizzare i CSS per forzare l'occultamento degli elementi dei messaggi di errore. Qualcosa di simile:

label.myvalidationclass { display: none !important; } 

Dove myvalidationclass è il nome della classe di errore predefinito o il proprio.

Sono consapevole che non è una soluzione molto bella ma, a mio parere, la visualizzazione dei messaggi di errore è una delle funzionalità principali del plug-in.

d.

+0

Ci scusiamo per il molto tardi accettazione, ma se mi ricordo ho fatto finire con qualcosa di simile a hacking del css . – soul

47

È possibile eseguire questa operazione senza utilizzare gli hack CSS chiamando lo checkForm().

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

checkForm() non attiva le modifiche dell'interfaccia utente.

Tuttavia, c'è un effetto collaterale. I campi modulo verranno ora convalidati in caso di modifica/messa a fuoco/sfocatura, che potrebbe non essere desiderabile. È possibile disattivare questo comportamento resettare l'oggetto submitted:

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

che si traduce in:

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

+1: questa è una soluzione molto più bella e consente la flessibilità di convalidare solo senza messaggi quando richiesto. –

+1

Questa è la soluzione che ho usato e posso consigliare a tutti. –

+1

C'è un modo per scoprire se un determinato input è valido senza evidenziarlo? – simaglei

Problemi correlati