Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用JQuery计算不为空的文本字段?_Javascript_Jquery - Fatal编程技术网

Javascript 如何使用JQuery计算不为空的文本字段?

Javascript 如何使用JQuery计算不为空的文本字段?,javascript,jquery,Javascript,Jquery,如何使用JQuery计算不为空的文本字段 我是这样想的: var cnt = 0; $.each($("input[name=items]"), function(i){ if($(this).val() != ""){ cnt++; } }); 如果我使用这些代码,我必须无条件地编写每个函数。不知何故,这是一种浪费,但还有其他办法吗?或者这是最好的方法吗?没有选择器来检索空的输入元素,因此实现所需的唯一方法是通过循环。但是,您可以使用隐式循环,方法是使用filt

如何使用JQuery计算不为空的文本字段

我是这样想的:

var cnt = 0;

$.each($("input[name=items]"), function(i){
   if($(this).val() != ""){
       cnt++;
   } 
});

如果我使用这些代码,我必须无条件地编写每个函数。不知何故,这是一种浪费,但还有其他办法吗?或者这是最好的方法吗?

没有选择器来检索空的
输入
元素,因此实现所需的唯一方法是通过循环。但是,您可以使用隐式循环,方法是使用
filter()
而不是
each()
,如下所示:

var cnt = $('input[name="items"]').filter(function() {
  return this.value.trim() == '';
}).length;
如果您不需要IE支持,则可以使用ES6箭头功能缩短此代码:

var cnt = $('input[name="items"]').filter((i, el) => el.value.trim() === '').length;

另一种不需要构造中间数组或jQuery集合的方法是使用
reduce

const count=Array.prototype.reduce.call(
$(“输入[名称=项目]”),
(a,输入)=>$(输入).val()==''a+1:a,
0
);
控制台日志(计数)

长度可以通过查询选择器获得

$('input[name="items"][value=""]').length

您只需使用CSS选择器即可:

$('input[name=items][value=""], input[name=items]:not([value=""])').length

我将两个选择器组合在一起,因为如果元素根本不包含
value
属性,您将得到结果0,对于这种情况,需要
input[name=items]:not([value=”“])

为什么你认为现有的代码不好?@AnkitAgarwal没有。我只是想知道除了上面提到的以外还有没有其他方法code@undefined很抱歉我在代码中输入了一个错误,并修复了它!谢谢你的回答。我想知道是否有一种方法可以在不编写循环语句的情况下选择一个空文本字段。正如我在回答中提到的,您需要一个循环。像这样的隐式循环是最简洁的逻辑。我只是想知道是否还有其他方法。可以使用循环语句。再次感谢您的回答。这是假设自页面加载后,
未被用户更改。考虑到这似乎是为了表单验证,那么这就有点多余了。我只开发后端,所以jquery语法有点不熟悉。我很感激你的回答,我会再检查一下。请看编辑,如果你觉得不舒服,这里绝对不需要jQuery