Javascript 如果表单的任何输入或选择为空,如何删除表行?

Javascript 如果表单的任何输入或选择为空,如何删除表行?,javascript,jquery,Javascript,Jquery,我有一个如下的表单,如果输入文本和选择选项为空,我希望删除tr行。如果任何输入不是空的,则显示表行 正如您所看到的,输入不是空的,它正在删除整行,可以检查两个都不是空的,然后删除 通过使用Jquery 注意:表行是动态添加的 $(函数(){ $(“表#我的表格tr td”)。每个(函数(){ $(this).find('input,select')。each(function(){ if($(this).val()==“”){ $(this).closest('tr.table_row').re

我有一个如下的表单,如果输入文本和选择选项为空,我希望删除tr行。如果任何输入不是空的,则显示表行

正如您所看到的,输入不是空的,它正在删除整行,可以检查两个都不是空的,然后删除

通过使用Jquery

注意:表行是动态添加的
$(函数(){
$(“表#我的表格tr td”)。每个(函数(){
$(this).find('input,select')。each(function(){
if($(this).val()==“”){
$(this).closest('tr.table_row').remove();
}
})
})
})

选择收藏夹
国际象棋
尸体
红宝石
选择收藏夹
国际象棋
尸体
红宝石
选择收藏夹
国际象棋
尸体
红宝石

要检查所有输入,您可以尝试以下方法。正如您所提到的,您正在动态添加行,因此您希望其他一些事件处理程序再次检查是否有更多坏行。此代码将在页面加载时运行一次,然后在单击“#removeBadRows”按钮时再次运行

$(函数(){
removeBadRows();
$(文档)。在('单击','删除行')上,函数(){
removeBadRows();
});
});
函数removeBadRows(){
$(“表#我的表格tr”)。每个(函数(){
var-badCount=0;
var inputLength=$(this).find('input,select').length;
$(this).find('input,select')。每个(函数(){
if($(this).val()==“”){
坏计数++;
}
});
如果(错误计数==输入长度){
$(this.remove();
}
});
}

选择收藏夹
国际象棋
尸体
红宝石
选择收藏夹
国际象棋
尸体
红宝石
选择收藏夹
国际象棋
尸体
红宝石

这可能是最简单的方法

$(function(){
  $(document).on('change', '.table_row input', function(e) {
    if($(this).val()==""){
      $(this).closest('.table_row').remove();
    }
  });
});

奇怪的是,我不知道这里的完整上下文,所以这可能不适用。但是,为什么要将重点放在删除行上?为什么不在输入有效的情况下才添加行?如果动态添加行,是什么触发了删除行?加载页面时,您发布的代码只会运行一次。是否要在输入更改时删除该行?然后,您应该将删除代码放入例如
$(this)。查找('input,select')。更改(…
Hi@Nicolay,我有第二个输入不是空的,但它正在删除行。逻辑非常简单,你在它可能找到的表行中有任何隐藏的输入吗?我没有其他输入,请在Fiddle中检查你的代码。编辑我的帖子时使用了代码片段,对我来说工作正常,根据逻辑,第2行应该是remOVE,因为它在select中没有值,第1行和第3行是正确的。但是输入不是空的,您必须检查两个输入。您的代码和我的代码之间没有差异