javascript - jQuery Select Checkbox 当文本存在时,从打印中隐藏未选中的行

标签 javascript jquery html css checkbox

我有一个动态生成的表格,其中包含每行的复选框、一些数据和一个文本输入字段。

我想在选定行的文本框中输入文本后自动选中该行的复选框。最后,当按下“完成”按钮时,我希望隐藏所有未选中的行以防止打印。最终输出将是仅包含选定行(即选中复选框的行)及其值的表格。

这是隐藏未选中行的 css 打印类:

<style type="text/css" media="print">
.grid .hidden tr {
  display:none;
}
</style>

这是 HTML:

<table id="data" class="grid">
<thead>
    <tr>
        <th>&nbsp;</th>
        <th>Part Number</th>
        <th>Description</th>
        <th>Qty to Order</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td><input type="checkbox" class="check"></td>
        <td>1234</td>
        <td>Description data goes here</td>
        <td><input type="text" class="inputData"></td>
    </tr>
    <tr>
        <td><input type="checkbox" class="check"></td>
        <td>3454</td>
        <td>Description data goes here</td>
        <td><input type="text" class="inputData"></td>
    </tr>
    <tr>
        <td><input type="checkbox" class="check"></td>
        <td>6787</td>
        <td>Description data goes here</td>
        <td><input type="text" class="inputData"></td>
    </tr>
</tbody>
</table>
<button id="clicker">Finish</button>

最后,这里是 jQuery。这是在文本字段中输入文本时选择所有复选框,而不仅仅是该行的复选框(我不明白),而不是将“隐藏”类分配给没有复选框的行 - 该类不是完全被分配。

$(document).ready(function() {
//Check for input in text field
$('#data > tbody > tr').each(function() {
    $(".inputData").change(function() { 
        if ($(this).val().length > 0) {
            $(".check").prop("checked",true);
        } else {
            $("tr").addClass("hidden");
        }
    });
});

$("#clicker").click(function() {
        window.print();
        return false;
});
});


</script>

我构建它的逻辑是确保我们只选择表中 ID 为数据的行。第一个函数将遍历查看文本字段的每一行,如果该字段的长度大于 0,则选中该框。否则,分配“隐藏”类,这将阻止它打印。最后,简单地为按钮分配一个点击事件。

非常感谢任何帮助。

这是一个 jsFiddle

最佳答案

这会根据输入是否有值来选中或取消选中相应的框:

$(".inputData").on('input', function () {
  var checkbox= $(this).closest('tr').find('[type="checkbox"]');
  checkbox.prop('checked', $(this).val());
});

它不需要在 each() 方法中。

这会隐藏所有未选中复选框的行:

  $('[type="checkbox"]:not(:checked)').closest('tr').hide();

将它放在 $("#clicker").click() 函数中是有意义的。

Updated Fiddle

关于javascript - jQuery Select Checkbox 当文本存在时,从打印中隐藏未选中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32466366/

相关文章:

javascript - JavaScript 中的 TypeError : document. getElementById(...) 为 null

html - 滚动内容层在位置 :absolute Layer? 下方

javascript - 如何更改除第一个面板之外的面板电流?

javascript - 找不到元素

javascript - 在 jQuery 中获取所有选中复选框 VALUES 的最佳方法

javascript - 我如何使用 angularjs 创建级联 md-select?

javascript - 折叠时链接数据表字段

JQuery选择字段结果组合,显示某个类或id?

html - 如何在不使用百分比的情况下将div高度设置为与父容器相同?

javascript - 如何使用 set Attribute 方法更改 jquery 中的 css?