2011-02-04 2 views
1

Je donne les résultats suivants:Comment puis-je distinguer entre une zone de texte vide et une zone de texte avec zéro dans JavaScript?

var NewCount = document.getElementById('MainContent_gv_NewCount_' + rowIndex).value; 
if (NewCount != "") { 
    document.getElementById('MainContent_gv_lblTotal_' + rowIndex).innerHTML = "£" + ((originalCount - NewCount) * unitCost).toFixed(2); 
} else { 
    document.getElementById('MainContent_gv_lblTotal_' + rowIndex).innerHTML = ""; 
      } 

Les calculs que je fais sont basés sur la valeur dans la zone de texte. (NewCount).

Je souhaite que l'étiquette soit mise à jour si la valeur est un nombre quelconque (y compris 0), mais qu'elle doit être effacée si l'utilisateur efface la zone de texte. Cependant, il traite pour le moment une zone de texte vierge et une zone de texte avec 0 dans la même zone.

Comment puis-je différencier les deux?

+1

Je ne crois pas que le code affiché pourrait être responsable de ce que vous percevez aller mal. La comparaison que vous avez, 'NewCount! =" "', Sera 'true' quand la valeur de la boîte d'entrée est une chaîne non-vide, y compris la chaîne" 0 ". – Pointy

+0

Voulez-vous traiter les espaces blancs de la même manière que ""? – JoeyRobichaud

+0

@Pointy - Ce n'est pas comme ça que '! =' Fonctionne. Vous avez besoin de '! =='. – OrangeDog

Répondre

3

Utilisez !== dans votre instruction if.

+0

Mais '" 0 "! =" "' Évalue (comme on pourrait s'y attendre) à 'true'. – Pointy

+0

La modification de! = À! == a résolu le problème. – Ben

+0

pourquoi? pouvez-vous fournir un lien ou une explication? –

0
if (NewCount.length == 0) { 
    // text-box is empty 
} else if (!isNaN(NewCount)) { 
    // the value is a number 
} 
0

Tous les produits suivants pourraient travailler

NewCount.length > 0 
NewCount !== '' 
1

Je ne peux pas reproduire le comportement que vous décrivez. Dans mes tests, une zone de texte avec "0" sera considérée comme et non comme en Javascript en utilisant votre logique de comparaison (! = "").

Voici ma tentative: http://jsfiddle.net/pJgyu/5404/

Questions connexes