2010-11-23 10 views
6

Establezco el valor de un campo oculto #thimble en la carga de la página utilizando los valores del lado del servidor.¿Debe comprobar null & length o hay una forma más corta de verificar una cadena no vacía?

Luego, en JavaScript, quiero actuar sobre ese valor solo si se ha rellenado con alguna cadena no vacía.

¿Es esta la forma más concisa de verificar que el valor no esté vacío?

if ($("#thimble").val() != null && $("#thimble").val().length > 0) { 
    carryOn(); 
} 

Parece bastante largo.

Respuesta

11

Una cadena vacía es un valor Falsey- , Ni siquiera me molestaría en comprobar su length.

La siguiente es equivalente a su ejemplo:

if ($("#thimble").val()) { 
    carryOn(); 
} 

Un valor Falsey es un valor que produce false cuando se evaluó en contexto booleano (tales como la condición de una declaración de if).

valores

Falsey son:

  • null
  • undefined
  • NaN
  • 0
  • "" (cadena vacía)
  • false

Recuerde que una cadena en contexto booleano produce false sólo cuando su longitud es 0, si tiene espacios en blanco que siguen produciendo true:

Boolean("");  // false 
Boolean(" "); // true, whitespace 
+0

'si tiene espacio en blanco todavía produce verdadero': ¿no sería mejor recortarlo primero, en ese caso? –

+0

@Billy G. Claro, puedes usar '$ .trim()'. – alex

+0

@Billy, Sí, como @alex dijo use '$ .trim', acabo de reproducir su ejemplo ...' $ ("# dedal"). Val(). Length> 0' todavía producirá 'true' con un cadena que contiene solo espacios en blanco ... recortar primero :) – CMS

3

Si por no vacía, que quiere decir que no sea de longitud cero o de sólo espacios en blanco nada, a continuación, utilizar $.trim con .length:

if ($.trim($("#thimble").val()).length) { 
    ... 
} 
+0

... y como @CMS señala en su respuesta perspicaz , la llamada de 'longitud' es innecesaria. – karim79

+0

Sí, la respuesta de CMS es una muy buena explicación, pero me pregunto por qué no incluye 'trim' como lo hace aquí, incluso si' length' no es necesario. –

+0

Creo que estaba agregando valor a la discusión. Se dio cuenta de que recortar el valor ya se había mencionado y optó por no duplicar. – karim79

0
if ($("#thimble").val().length) { 
    carryOn(); 
} 
Cuestiones relacionadas