Javascript jQuery检查至少五个输入中是否有数据
我在页面上有许多输入,需要强制至少填写5项。如果没有,则显示一条消息,说明您必须填写至少5个。到目前为止,我已经尝试了以下内容,但它只是一次又一次地显示错误。这样做的正确方式是什么Javascript jQuery检查至少五个输入中是否有数据,javascript,jquery,Javascript,Jquery,我在页面上有许多输入,需要强制至少填写5项。如果没有,则显示一条消息,说明您必须填写至少5个。到目前为止,我已经尝试了以下内容,但它只是一次又一次地显示错误。这样做的正确方式是什么 $('div.inputs input').each(function(i) { $input = $(this); while (i < 5) { if ($($input).val() == '') { alert('must fill at leas
$('div.inputs input').each(function(i) {
$input = $(this);
while (i < 5) {
if ($($input).val() == '') {
alert('must fill at least 5 items!');
}
}
});
$('div.input')。每个(函数(i){
$input=$(此项);
而(i<5){
如果($($input).val()=''){
警报('必须至少填写5项!');
}
}
});
您可以创建更好的选择器,然后:
if ($('div.inputs input[value!=""]').length < 5) {
alert('must fill at least 5 items!');
}
您可以创建更好的选择器,然后:
if ($('div.inputs input[value!=""]').length < 5) {
alert('must fill at least 5 items!');
}
KARASZI István的答案中显示的方法更为简洁,但就解释代码的错误以及如何修复而言,(主要)问题是
while
条件:
while(i<5)
也就是说,对于每个非空输入,递增一个计数器,然后在循环后检查计数器。请注意,从
内返回false
。each()
回调函数立即停止。each()
循环;一旦我们达到最小的5个非空值,就不需要继续计数。KARASZI István的答案中显示的方法更简洁,但就解释代码的错误以及如何修复而言,(主要)问题是while
条件:
while(i<5)
也就是说,对于每个非空输入,递增一个计数器,然后在循环后检查计数器。请注意,从
内返回false
。each()
回调函数立即停止。each()
循环;一旦我们达到最小的5个非空值,就不需要继续计数。可能重复的值太令人沮丧了!它不是重复的,因为它有相似的背景或预期的结果。问题是我想用我的代码来解决我的问题,因此其他问题的答案不相关,除非我只想快速获得答案,而不是我的问题的答案。你的问题太本地化了,因为我认为其他任何人都不会拥有与你相同的代码。如果你特别问你的代码出了什么问题,这可能会有所不同,但你问做这件事的正确方法是什么,这在以前已经得到了回答。我不能期望我的问题只有在世界上其他人也能从中受益时才能得到解决。。。就是这样!可能重复的如此令人沮丧!它不是重复的,因为它有相似的背景或预期的结果。问题是我想用我的代码来解决我的问题,因此其他问题的答案不相关,除非我只想快速获得答案,而不是我的问题的答案。你的问题太本地化了,因为我认为其他任何人都不会拥有与你相同的代码。如果你特别问你的代码出了什么问题,这可能会有所不同,但你问做这件事的正确方法是什么,这在以前已经得到了回答。我不能期望我的问题只有在世界上其他人也能从中受益时才能得到解决。。。就是这样!我很惊讶,这是有效的tbh。在输入中输入值不会更改其值
属性。jQuery似乎在检查元素的属性,而不是属性。这是不好的,因为反过来(选择具有空值的元素$('input[value=”“])
),jQuery(或Sizzle)似乎使用内部querySelectorAll
方法,但不这样做:是的,我在发布后也在徘徊:)Mmmh。。。看起来比我想象的还要混乱<代码>$(“输入”)。非(“[value=”“]”)(使用内部方法)的工作原理与“$”(“输入[value!=”])
的工作原理相同。。。我认为,最终使用.filter()
;)可能会更好你用过滤器的最新答案对我不起作用!也在使用最新版本的jQuery。@Cameron第一次缺少括号时,请再次检查。我很惊讶这在tbh中起作用。在输入中输入值不会更改其值
属性。jQuery似乎在检查元素的属性,而不是属性。这是不好的,因为反过来(选择具有空值的元素$('input[value=”“])
),jQuery(或Sizzle)似乎使用内部querySelectorAll
方法,但不这样做:是的,我在发布后也在徘徊:)Mmmh。。。看起来比我想象的还要混乱<代码>$(“输入”)。非(“[value=”“]”)(使用内部方法)的工作原理与“$”(“输入[value!=”])
的工作原理相同。。。我认为,最终使用.filter()
;)可能会更好你用过滤器的最新答案对我不起作用!也使用最新版本的jQuery。@Cameron在第一次缺少括号时再次检查它。