【问题标题】:Is it possible to make trim in a selector?是否可以在选择器中进行修剪?
【发布时间】:2010-11-24 19:29:29
【问题描述】:

我想计算表单中所有为空的输入。用空我的意思是它的值在修剪它的值后是空的(如果用户插入空白它也是空的)。 这个 jquery 计算它们,但它不包括修剪:

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

有一些 jquery 可以用来修剪选择器吗?

谢谢

【问题讨论】:

    标签: javascript jquery jquery-selectors trim


    【解决方案1】:
    $(':text').filter(function () {
        return $.trim($(this).val()).length === 0;
    });
    

    【讨论】:

      【解决方案2】:

      虽然@Domenic 的回答中的the .filter() method 是一个好方法,但我会以不同的方式实现它。

      示例: http://jsfiddle.net/patrick_dw/mjuyk/

      $('input:text').filter(function () {
          return !$.trim(this.value);
      });
      
      • 您应该指定input:text。否则 jQuery 需要观察 DOM 中的 每个 元素,看它是否为type='text'。 (See the docs.)
      • 因为这些是文本输入,所以使用this.value 比使用$(this).val() 更快。
      • 无需获取length 属性,因为空字符串是错误的。因此,只需使用 ! 运算符即可。

      或者你可以使用.filter()的倒数,即the .not() method

      示例: http://jsfiddle.net/patrick_dw/mjuyk/1/

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

      另外,您可以像这样创建自定义选择器:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-20
        • 2018-12-04
        • 1970-01-01
        • 1970-01-01
        • 2014-04-12
        • 1970-01-01
        • 2017-03-07
        • 2018-07-10
        相关资源
        最近更新 更多