2015-10-23 17 views
24

Che differenza c'è tra $("#id").val.length e $("#id").val().length?Differenza tra val.length e val(). Lunghezza in jQuery?

Quando scrivo $("#id").val.length, l'output è 1 e $("#id").val().length quindi l'output è la lunghezza dei caratteri scritti.

Qual è la spiegazione?

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length: È solo '($ .fn.val) .length' – Bergi

+0

Si prega di non utilizzare il [tag: jquery-validate] tag quando la domanda non ha assolutamente nulla a che fare con il plugin jQuery Validate. Modificato. – Sparky

risposta

51

$("#id").val restituisce la definizione della funzione di val e length of a function is the number of parameters the function is expecting come val accetta il parametro (setter per impostare il valore) la lunghezza è 1, mentre val() invocherà la funzione e ottenere il valore restituito e length su esso ritornerà il numero di caratteri nel valore.

L'uso corretto è $(selector).val().length

Lo consiglierò anche usare del VanillaJS trim o jQuery di $.trim su val() prima di controllare length per rimuovere gli spazi iniziali e finali.

+12

'lunghezza di una funzione è il numero di parametri che la funzione è in attesa' Molto bello! Non lo sapevo. (e sì, l'ho provato). Prova '(test funzionale (uno, due) {}). Lunghezza' – AmmarCSE

1

Con $("#id").val si ottiene la funzione (il codice sorgente) e con $("#id").val() questa funzione verrà richiamata ed eseguita.

8

Diamo uno sguardo al sia il codice:

Caso 1:

$("#id").val.length 

Qui .VAL riportare la definizione del metodo per .val(). e .length con esso restituisce numero di metodi di massima argomenti accetta (ad esempio 2 per .toggleClass())

Caso 2:

$("#id").val().length 

Qui .val() rendimenti valutazione metodo risultato cioè il valore dell'oggetto DOM nella stringa format e .length restituisce il valore della stringa di lunghezza restituita.

modo corretto:

Caso 2 è il modo corretto di usare .val() insieme lunghezza restituisce lunghezza valore dell'elemento associato ad esso.

+1

'Poiché il conteggio del numero del metodo è 1, .lunghezza con esso restituisce 1.' questo non è corretto. Il conteggio del * numero di parametri * del metodo è '1'. – Agop

+0

@Agop: sì. aggiornato la risposta. –

Problemi correlati