2010-11-23 14 views
6

Je définis la valeur d'un champ caché #thimble lors du chargement de la page en utilisant des valeurs côté serveur.Est-ce que vous devez vérifier null & length ou existe-t-il un moyen plus court de vérifier une chaîne non vide?

Ensuite, en JavaScript, je veux agir sur cette valeur seulement si elle a été remplie avec une chaîne non vide.

Est-ce la façon la plus concise de vérifier que la valeur n'est pas vide?

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

Semble plutôt long.

Répondre

11

Une chaîne vide est une Falsey valeur , Je ne prendrais même pas la peine de vérifier ses length.

Ce qui suit est équivalent à votre exemple:

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

A Falsey valeur est une valeur qui produit false lorsqu'elle est évaluée dans le contexte Boolean (comme la condition d'une instruction if).

valeurs Falsey sont:

  • null
  • undefined
  • NaN
  • 0
  • "" (chaîne vide)
  • false

Rappelez-vous qu'une chaîne dans contexte booléen produit false que lorsque sa longueur est 0, si elle a des espaces, il encore produire true:

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

's'il a des espaces, il produit toujours true': ne vaudrait-il pas mieux le couper d'abord, dans ce cas? –

+0

@Billy G. Bien sûr, vous pouvez utiliser '$ .trim()'. – alex

+0

@Billy, Yep, comme @alex dit utiliser '$ .trim', je viens de reproduire votre exemple ...' $ ("# thimble"). Val(). Longueur> 0' produira toujours 'true' avec un chaîne contenant uniquement des espaces blancs ... rogner en premier :) – CMS

3

Si par des non-vide, vous voulez dire autre chose que zéro longueur ou des espaces blancs ne, puis utilisez $.trim avec .length:

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

... et comme le souligne @CMS dans sa réponse perspicace , l'appel 'length' est inutile. – karim79

+0

Oui, la réponse de CMS est une très bonne explication mais je me demande pourquoi il n'inclut pas 'trim' comme vous le faites ici - même si' length 'est inutile. –

+0

Je pense qu'il ajoutait de la valeur à la discussion. Il a réalisé que couper la valeur avait déjà été mentionné et a opté pour ne pas dupliquer. – karim79

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