我想检查所有带有'textinput'类的文本输入是否为空,但它似乎只检查第一个输入是否为空,我无法弄清楚原因。谁能看到我做错了什么?
$('#check').click(function(){
var allEmpty;
$('.textinput').each(function(){
if(!$('.textinput').val()){
allEmpty = true;
}
});
if (allEmpty == true){
alert('all empty');
}
});
答案 0 :(得分:3)
找到非空的所有.textinput
,并检查选择器长度。如果不存在,则它们都是空的:
$('#check').on('click', function(){
var allEmpty = ! $('.textinput').filter(function() {
return $.trim( this.value ) != "";
}).length;
if (allEmpty) alert('all empty');
});
或
if ( ! $('.textinput[value !=""]').length ) alert('all empty');
答案 1 :(得分:2)
尝试检查相反的逻辑。如果设置了任何值,则它们not
全部为空。
此外,当您处于$(this)
函数的上下文中时,您希望使用.each()
。否则,调用$('.textinput')
将再次重新选择这些元素,而不是处理当前元素。
添加$.trim()可确保空格不计为实际值,但如果要将空格计为值,则可以将其删除。
$('#check').click(function() {
var allEmpty = true;
$('.textinput').each(function(){
if ($.trim($(this).val())) {
allEmpty = false;
}
});
if (allEmpty == true){
alert('all empty');
}
});
答案 2 :(得分:1)
您需要使用“this”来使用每种方法选择的元素。
$('#check').click(function () {
var allEmpty;
$('.textinput').each(function () {
if (!$(this).val()) {
allEmpty = true;
}
});
if (allEmpty == true) {
alert('all empty');
}
});
答案 3 :(得分:1)
这应该是你的条件>>
if(!$('.textinput').val()){
}else {
allEmpty = true;
}
答案 4 :(得分:1)
你的病情错了;您为每个项目设置allEmpty = true。 你必须颠倒你的逻辑:
$('#check').click(function(){
var almostOneNotEmpty = false;
$('.textinput').each(function(){
if($(this).val()){
almostOneNotEmpty = true;
}
});
if (!almostOneNotEmpty == true){
alert('all empty');
}
});
答案 5 :(得分:1)
这个简单的检查会告诉你它们是否都是空的:
var isEmpty = !$('.textinput').map(function() { return this.value; }).get().join('');
如果所有字段都为空,这将为您提供布尔值true
。