Jquery选择器用于查找非空输入的计数

Bum*_*ble 13 javascript jquery knockout.js

我有以下HTML DOM

      <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>
Run Code Online (Sandbox Code Playgroud)

我想得到非空输入框的数量.

这是我试过的

$('#container input[type="text"][value!=""]').length
Run Code Online (Sandbox Code Playgroud)

要么

$('#container input[type="text"]').filter('input[value!=""]').length
Run Code Online (Sandbox Code Playgroud)

即使我输入一些值,它总是显示为零.我试过的这些选择器有什么问题,为什么它不起作用?

pla*_*alx 27

您可以传入过滤器函数而不是选择器:

$('#container input[type="text"]').filter(function () {
    return !!this.value;
}).length;
Run Code Online (Sandbox Code Playgroud)


Ant*_*ton 10

属性值将始终为默认值,因此您必须筛选输入框并检查值,如下面的代码所示

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

DEMO

  • 那是因为[value]会搜索默认值属性.在输入框@Bumble中键入时,value属性不会更改 (2认同)