【发布时间】:2010-11-24 19:29:29
【问题描述】:
我想计算表单中所有为空的输入。用空我的意思是它的值在修剪它的值后是空的(如果用户插入空白它也是空的)。 这个 jquery 计算它们,但它不包括修剪:
$(':text').filter('[value=""]').length
有一些 jquery 可以用来修剪选择器吗?
谢谢
【问题讨论】:
标签: javascript jquery jquery-selectors trim
我想计算表单中所有为空的输入。用空我的意思是它的值在修剪它的值后是空的(如果用户插入空白它也是空的)。 这个 jquery 计算它们,但它不包括修剪:
$(':text').filter('[value=""]').length
有一些 jquery 可以用来修剪选择器吗?
谢谢
【问题讨论】:
标签: javascript jquery jquery-selectors trim
$(':text').filter(function () {
return $.trim($(this).val()).length === 0;
});
【讨论】:
虽然@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')
【讨论】: