2012-04-11 1 views
40

L'opzione focusInvalid è true per impostazione predefinita. Ma funziona solo quando avviene la sottomissione della forma. Se convalido il modulo con il metodo valid, allora non funziona. Quindi la domanda è come mettere a fuoco il campo invalido quando si usa valid?Come mettere a fuoco i campi non validi con jQuery validate?

Vedere this demo per vedere la differenza. Basta premere i pulsanti qui.

+1

@ Evan, non ti piace jsbin? È possibile modificare anche questo: http://jsbin.com/ayupob/edit#javascript,html –

risposta

40

Prima di tutto è necessario salvare il validatore in una variabile in modo da poter utilizzare nel gestore clic:

var validator = $("#test-form").validate({ /* settings */ }); 

Poi nel gestore di convalida, è possibile chiamare manualmente la funzione focusInvalid dalla variabile validator :

$("#validate").click(function() { 
     if ($("#test-form").valid()) 
       alert("Valid!"); 
     else 
       validator.focusInvalid(); 

     return false; 
    }); 

Example

49

Con la messa a fuoco invalidHandler è possibile impostare per la prima elem ent che fallisce:

+3

jQuery validate seleziona il primo elemento non valido ** o l'ultimo elemento non valido focalizzato **. Il tuo codice è l'unico che ho trovato che schiva questo fastidio e seleziona sempre il primo. Grazie! –

+2

Sì, c'è molto che un snafus influisce sulla gestione del focus di jquery.validates. Di per sé funziona come un top, ma quando si inizia ad aggiungere progetti reattivi e più script jquery, l'attenzione può essere un po 'off. Bella sceneggiatura, grazie per averlo pubblicato. –

+0

+1 per questa opzione, non è stato possibile trovarlo da nessuna parte. BTW, un piccolo consiglio: anche fare 'validator.lastActive = validator.errorList [0] .element;' per evitare di focalizzare su due elementi .. questo era qualcosa che ho affrontato con il campo 'end date' come ultimo attivo e' start date' come primo campo non valido, datepicker sono spuntati su entrambi i campi (ovviamente entrambi non erano validi). Saluti!! – Fr0zenFyr