2010-02-04 4 views
7

Je soumets des commentaires via $ .ajax. Cependant, je veux vérifier que certains contenus sont entrés dans la boîte de saisie. En ce moment je suis en utilisant ceci:Vérification de l'entrée vide avec jQuery

if ($("#comments").val().length != 0){ 

Cependant, cela ne fonctionne que si un utilisateur quitte à l'entrée en blanc, si le laissez un espace ou revenir alors il passera. Comment puis-je améliorer cela si?

Répondre

11

Supprimer les espaces avant de vérifier vide:

if ($("#comments").val().replace(/^\s+|\s+$/g, "").length != 0){ 
+0

serait-ce plus utile que d'utiliser une garniture? – Chris

+1

@Chris - non - Je ne connaissais pas la fonction de trim de jQuery. –

8

vous pourriez opter pour un trim -fonction ... google nous donner quelques liens intéressants. btw ... jQuery a une trim-function

par exemple.

var trimmedValue = jQuery.trim($('#comments').val()); 
if (trimmedValue.length > 0) { 
    // TODO 
} 
+0

Non testé, mais je pense que vous pourriez aller plus loin et faire jQuery.trim ($ ("# commentaires"). Val()). Longueur puisque la garniture renvoie une chaîne de toute façon. Pas que la variable supplémentaire va vraiment nuire à quoi que ce soit. – thismat

+0

comme je suis toujours un ami d'introduire des variables supplémentaires, pour avoir une certaine possibilité de déboguer, je le laisserais de cette façon :) –

+0

Ne peut pas argumenter que. J'ai juste l'habitude (bonne ou mauvaise) d'éviter les variables supplémentaires si je ne vais pas les réutiliser. Je pourrais voir un bon cas de réutilisation si vous allez valider le contenu réel si. – thismat

1

En JavaScript

//Following all return true 
"" == false 
" " == false 
" " == false 
" " == false 
//Not related to question but interesting 
//Following all (also) return true 
!" " == false 
!" " == false 
!" " == false 
//Except 
!"" == false //returns false 

(Vérifié avec la console Firebug et la console Outils de développeur de Chrome).

+0

Je ne suis pas d'accord avec vous: http://jsfiddle.net/cn2YH/ – jerone

+0

@jerone N'essayez pas avec "!" opérateur. Voir la mise à jour –

+0

Ok, aldo c'est une façon très étrange de vérifier une déclaration, je vous donne que cela fonctionne: http://jsfiddle.net/cn2YH/2/ – jerone

1

Je sais que c'est une réponse très en retard, mais je me sers de ce ...

var self = $(this).val(); 
if (!self || self[0] == ' '){ 
    //////do something 
} 

et il fonctionne bien! J'espère que quelqu'un d'autre peut s'en servir!

+0

Ce n'est pas une bonne idée. Qu'en est-il du cas où l'utilisateur entre '' "chaîne valide" '? Vous ne voudriez probablement pas l'ignorer. –

+0

Je suppose que c'est possible, mais pourquoi quelqu'un voudrait-il une valeur vide pour son premier personnage? –

+0

Ou devrais-je dire besoin d'une valeur vide au lieu de vouloir. –