2014-01-28 5 views
9

ich die folgenden HTML-DOM habenJQuery-Selektor Anzahl der nicht leeren Eingänge, um herauszufinden,

 <div id="container> 
     <p data-bind="visible:ShowPostCode()"> 
    <label class="field-label" for="postcode">Postcode</label> 
    <input id="txtPostCode" data-bind="value:PostCode, valueUpdate: &quot;afterkeydown&quot;" class="field-stretch" type="text"> 
    </p> 

    <p data-bind="visible:ShowDateOfBirth()"> 
    <label class="field-label" for="dateofbirth">Date of birth</label> 
    <input data-bind="value:DateOfBirth, valueUpdate: &quot;afterkeydown&quot;" class="field-stretch" type="text"> 
    </p> 

      <p style="display: none;" data-bind="visible:ShowtelephoneNumber()"> 
    <label class="field-label" for="telephoneNumber">Telephone number</label> 
    <input data-bind="value:DrivingLicenceNumber, valueUpdate: &quot;afterkeydown&quot;" class="field-stretch" type="text"> 
    </p> 
    </div> 

würde Ich mag das nicht von nicht-leere Eingabefelder erhalten.

ist das, was ich

versucht
$('#container input[type="text"][value!=""]').length 

oder

$('#container input[type="text"]').filter('input[value!=""]').length 

auch wenn ich Eingabe einige Werte immer als Null zeigt, ist. Was ist los mit diesen Selektoren ich versuchte und warum es nicht funktioniert?

Antwort

21

Sie passieren kann in einer Filterfunktion filtern müssen, anstatt ein Selektor:

+0

@ A1rPun Nein, weil Wert eine Zeichenfolge ist. '!! '0' === true' – Florent

+0

@ A1rPun Die Werteigenschaft einer Texteingabe ist immer eine Zeichenkette. – plalx

+0

Ihr habt recht! – A1rPun

9

Der Attributwert wird immer den Standardwert, so dass Sie durch die Eingabefelder und überprüfen Sie den Wert wie dieser Code unter

$('#container input[type="text"]').filter(function() { 
    return this.value.length > 0 
}).length; 

DEMO

+0

Dank es funktioniert, immer noch nicht sicher, warum das nicht funktioniert kann jemand erklären, was passiert, wenn ich diesen Selektor verwenden? $ ('# container input [type = "text"] [value! = ""]'). length – Bumble

+2

Das liegt daran, dass [value] nach dem Standardwert-Attribut sucht. Das Wertattribut ändert sich nicht, wenn Sie die Eingabefelder @Bumble eingeben – Anton

+0

Danke @Anton macht jetzt Sinn – Bumble

Verwandte Themen