2010-11-24 4 views
3

Ich möchte alle Eingaben in meinem Formular zählen, die leer sind. Mit leer bedeute ich, dass sein Wert leer ist, nachdem er seinen Wert getrimmt hat (wenn der Benutzer whitespaces auch leer gibt). Diese jquery zählen sie, aber es beinhaltet nicht die Trimmung:Kann man in einem Selektor trimmen?

$(':text').filter('[value=""]').length 

etwas jquery hat, die verwendet werden können, in dem Wähler zu trimmen?

dank

Antwort

11
$(':text').filter(function() { 
    return $.trim($(this).val()).length === 0; 
}); 
+0

+1 schlug mich zu ihm. ;) – Stephen

+0

Ja, das sollte funktionieren. – RussellUresti

9

Während the .filter() method in @ Domenic Antwort ist ein guter Ansatz, würde ich es ein wenig anders umsetzen.

Beispiel:http://jsfiddle.net/patrick_dw/mjuyk/

$('input:text').filter(function() { 
    return !$.trim(this.value); 
}); 
  • sollten Sie input:text angeben. Ansonsten muss jQuery jedes Element im DOM beobachten, um zu sehen, ob es type='text' ist. (See the docs.)
  • Da dies Texteingaben sind, ist es schneller zu verwenden this.value als $(this).val().
  • Keine Notwendigkeit, die length Eigenschaft zu erhalten, da eine leere Zeichenfolge falsch ist. Verwenden Sie einfach den Operator !.

Oder Sie die Inverse von .filter() verwenden könnte, die the .not() method ist:

Beispiel:http://jsfiddle.net/patrick_dw/mjuyk/1/

$('input:text').not(function() { 
    return $.trim(this.value); 
}); 

Sie können aber auch einen eigenen Selektor wie erstellen dies:

Beispiel

:http://jsfiddle.net/patrick_dw/mjuyk/2/

$.extend($.expr[':'], { 
    novalue: function(elem, i, attr){ 
     return !$.trim(elem.value); 
    } 
}); 

$('input:text:novalue') 
Verwandte Themen