【问题标题】:How can I count the total number of inputs with values on a page?如何计算页面上带有值的输入总数?
【发布时间】:2013-05-19 03:27:16
【问题描述】:

我希望有一个超级简单的验证脚本,可以将表单上的总输入与表单上带有值的总输入相匹配。您能否帮助解释为什么以下方法不起作用,并提出可行的解决方案?

小提琴:http://jsfiddle.net/d7DDu/

填写一项或多项输入,然后单击“提交”。我想查看填写的输入数作为结果。到目前为止,它只显示0

HTML:

<input type="text" name="one">
<input type="text" name="two">
<input type="text" name="three">
<textarea name="four"></textarea>
<button id="btn-submit">Submit</button>
<div id="count"></div>

JS:

$('#btn-submit').bind('click', function() {
    var filledInputs = $(':input[value]').length;
    $('#count').html(filledInputs);
});

【问题讨论】:

    标签: javascript jquery forms validation


    【解决方案1】:

    [value]指的是值attribute,与值property有很大不同。

    属性在您键入时更新,属性保持不变。这意味着您可以通过elem.value = elem.getAttribute("value") 来“重置”表单元素。

    就个人而言,我会这样做:

    var filledInputs = $(':input').filter(function() {return !!this.value;}).length;
    

    【讨论】:

    • @JamesMontagne 谢谢 - 当然通常我会使用 document.querySelectorAll("input,textarea") 代替 jQuery 选择器 XD
    • 谢谢!出于好奇,如果我想做与上述相反的操作(过滤掉带有值的输入,只留下空的输入),那个过滤器函数会是什么样子?
    • 谢谢。对于将来使用它的其他人...我确实注意到这并不排除仅带有 ` `(空格)的输入。知道如何将装饰物偷偷溜进去吗?
    • return !!this.value.replace(/^ +/,'')
    • 谢谢。如果我想引用 td 类似 'td amount class="editable-col" contenteditable="true" ' '/td' ... varfilledInputs = $('editable-col').filter(function() {return !!this.value.replace(/^ +/,'')}).length;不工作
    【解决方案2】:

    试试这个:http://jsfiddle.net/justincook/d7DDu/1/

    $('#btn-submit').bind('click', function() {
        var x = 0;
        $(':input').each(function(){
            if(this.value.length > 0){ x++; };
        });
        $('#count').html(x);
    });
    

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 1970-01-01
      • 2022-09-26
      • 2014-02-22
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-31
      相关资源
      最近更新 更多