是否可以在选择器中进行修剪?

时间:2010-11-24 19:29:30

标签: javascript jquery jquery-selectors trim

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

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

有什么jquery可用于在选择器中修剪吗?

感谢

2 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:9)

虽然@ 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')