Javascript 使用jQuery筛选和删除没有数据的输入

Javascript 使用jQuery筛选和删除没有数据的输入,javascript,jquery,Javascript,Jquery,我有一张销售订单的表格。该表单显示可选择的所有可用产品。 每行必须输入数量和ID。ID是隐藏的 我能够过滤数量输入,因为任何未选择的项目都没有值。 我的问题是,即使数量中没有值,ID也会有一个值 我想做的是完全删除这一行,这样如果qty值没有值,也可以删除ID 数量输入的名称为lineItem[i][qty]//i,为每行编制索引 id的名称为lineItem[i][product]//i为每行编制索引 JavaScript: // This is just the function to

我有一张销售订单的表格。该表单显示可选择的所有可用产品。 每行必须输入数量和ID。ID是隐藏的

我能够过滤数量输入,因为任何未选择的项目都没有值。 我的问题是,即使数量中没有值,ID也会有一个值

我想做的是完全删除这一行,这样如果qty值没有值,也可以删除ID

  • 数量输入的名称为lineItem[i][qty]//i,为每行编制索引
  • id的名称为lineItem[i][product]//i为每行编制索引
JavaScript:

// This is just the function to show you how I have the input structured
var showProduct = function (result) {

    //console.log(result.id  + " " + result.product );
    var last = $('.display:last');

    $(".display ").append("<tr> <td class = \"hide\">" + result.id + " </td> <td> " + result.productName + " </td> <td >"

    + "<input type = \"number\" min =\"0\" class = \"qty\" >   
    </input> </td> <td class = \"hide\"> " + "<input class = \"id\"  value = \"" + result.productName +
        "\"></td> </tr>"
    );

    var input = $(last.find('input.qty')[i]);
    input.attr("name", "lineItem[" + i + "][qty]");

    var input2 = $(last.find('input.id')[i]);
    input2.attr("name", "lineItem[" + i + "][product]");

    //console.log(i);
    i++
};

谢谢你能提供的帮助

您正在事件处理程序中附加事件侦听器。我不确定这是不是有意的。我认为你想要实现的是:

$('form').submit(function() {
  // filter out each "tr" that does not have a qty value
  $('.display tr').filter(function() {
    return !$(this).find('input.qty').val();
  }).remove();
});

如果您在提交表单后不需要重复使用表单,我喜欢这种方法$(this).find('.display').find('.tr').filter(function(){…),因为
find()
似乎比复合选择器更快。您的HTML看起来像什么?您似乎在说“当我单击
.form2
时,定义在
表单
的提交事件上运行的函数。”(但实际上并没有执行
表单的提交事件)。
$('form').submit(function() {
  // filter out each "tr" that does not have a qty value
  $('.display tr').filter(function() {
    return !$(this).find('input.qty').val();
  }).remove();
});