2012-10-26 7 views
30

prega di consultare la documentazione:
https://jqueryvalidation.org/jQuery.validator.addMethod/Cosa fa this.optional (elemento) quando si aggiunge un metodo di convalida jQuery?

Mi chiedo cosa this.optional(element) fa. Ho creato due moduli da testare:
Form1 e Form2 - uno con this.optional(element) e l'altro senza. Teoricamente parlando e secondo un paio di commenti sul this answer di Andrew Whitaker:

tutto this.optional non fa altro che dire "se il campo è facoltativo, tornare vero se è vuoto"

e

Il controllo this.optional verifica sostanzialmente se il campo è vuoto o meno prima di valutare se soddisfa o meno la regola.

Ma in azione non vedo differenze nel modo in cui funzionano Form1 e Form2. Per favore aiutami a capire la differenza nell'azione.

+0

Form1 e Form2 non sono più visibili. Qualche link alternativo? –

+1

@accord_guy: ha modificato la domanda. – Mori

risposta

37

OK ... così nei vostri esempi, il campo non è mai vuoto in nessuna delle due forme. O ha un valore di segnaposto o un tentativo di un indirizzo email. L'intero punto di this.optional(element) restituisce immediatamente true se l'elemento è vuoto E non è necessario.

Quindi, se avete avuto questi due metodi:

jQuery.validator.addMethod("BOB", function (value, element) { 
    return this.optional(element) || 
     element.value === 'BOB'; 
}, 'You did not enter BOB'); 

jQuery.validator.addMethod("mustbeBOB", function (value, element) { 
    return element.value === 'BOB'; 
}, 'You did not enter BOB'); 

Aggiunta di una classe di BOB required sarebbe lo stesso di entrare in una classe di mustbeBOB. Confrontatelo con una classe di BOB che consentirebbe uno spazio vuoto o "BOB", rispetto a una classe di mustbeBOB che passerà solo la convalida con un valore di BOB, vuoto non riuscirebbe. Ha più senso?

+7

Esempio utile! Ciò significa che l'uso di 'this.optional (element)' non ha significato se il campo è richiesto o ha un valore predefinito, giusto? – Mori

+0

Sì, sono d'accordo, @RainLover – Ryley

+0

Grazie, Ryley! :) – Mori

2

this.optional è destinato all'uso in metodi di convalida generici che possono essere utilizzati con elementi obbligatori o facoltativi. Permette loro di saltare tutti i propri controlli se il campo non è compilato. Se il campo è facoltativo, il metodo ritorna immediatamente con successo; se richiesto, il metodo restituisce l'errore immediatamente.

Utilizzando questo metodo, il metodo può assumere che il valore non sia vuoto, in modo da semplificare il resto della codifica.

Problemi correlati