2010-02-04 9 views
7

Sto inviando alcuni commenti tramite $ .ajax. Tuttavia, voglio verificare che alcuni contenuti siano inseriti nella casella di input. Al momento mi sto usando questo:Controllo dell'input vuoto con jQuery

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

Tuttavia questo funziona solo se un utente lascia nell'input vuoto, se lo lasciano uno spazio o tornare poi passerà. Come posso migliorare questo se?

risposta

11

Rimuovere gli spazi prima di controllare vuoto:

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

sarebbe più utile di un semplice trim? – Chris

+1

@Chris - no - Non sapevo nulla della funzione di assetto di jQuery. –

8

si potrebbe andare per un trim -funzione ... google darci alcuni link utili. btw ... jQuery ha un trim-function

es.

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

Non testati, ma penso che potresti andare oltre e fare jQuery.trim ($ ("# comments") .val()). Length poiché il trim restituisce comunque una stringa. Non che la variabile extra faccia davvero male a nulla. – thismat

+0

dato che sono sempre un amico nell'introdurre variabili extra, per avere qualche possibilità di eseguire il debug, lascerei in questo modo :) –

+0

Non posso dirlo. Ho solo l'abitudine (buona o cattiva) di evitare variabili extra se non le riutilizzerò. Potrei vedere un buon caso di riutilizzare questo se si sta andando a convalidare il contenuto effettivo però. – thismat

1

In 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 

(verificata con console Firebug e Console per gli sviluppatori Strumenti di Chromium).

+0

Non sono d'accordo con te: http://jsfiddle.net/cn2YH/ – jerone

+0

@jerone Non provare con "!" operatore. Vedi risposta aggiornata. –

+0

Ok, aldo è un modo molto strano per controllare una dichiarazione, ti do che funziona: http://jsfiddle.net/cn2YH/2/ – jerone

1

So che questa è una risposta incredibilmente in ritardo, ma sto usando questo ...

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

e funziona bene! spero che qualcun altro possa farne un uso!

+0

Questa non è una buona idea. Che dire del caso in cui l'utente inserisce '" stringa valida "'? Probabilmente non vorresti scartarlo. –

+0

Suppongo che sia possibile, ma perché qualcuno vorrebbe un valore vuoto per il loro primo carattere? –

+0

O dovrei dire bisogno di un valore vuoto invece di volere. –