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

Jav*_*avi 4 javascript jquery trim jquery-selectors

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

$(':text').filter('[value=""]').length
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Dom*_*nic 12

$(':text').filter(function () {
    return $.trim($(this).val()).length === 0;
});
Run Code Online (Sandbox Code Playgroud)


use*_*716 10

虽然.filter()方法在@ Domenic的回答是一个很好的办法,我想不同的方式实现这一点.

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

$('input:text').filter(function () {
    return !$.trim(this.value);
});
Run Code Online (Sandbox Code Playgroud)
  • 你应该指定input:text.否则jQuery需要观察DOM中的每个元素以查看它是否存在type='text'.(参见文档.)
  • 因为这些是文本输入,所以使用它this.value比使用起来更快$(this).val().
  • length由于空字符串是假的,因此无需获取属性.所以只需使用!运营商即可.

或者你可以使用的倒数.filter(),这是.not()方法:

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

$('input:text').not(function () {
    return $.trim(this.value);
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

$('input:text:novalue')
Run Code Online (Sandbox Code Playgroud)