我使用了bootstrap DataTable来显示数据。同时我有一个HTML复选框作为该dataTable的列。我有一个提交按钮来获取所选复选框的值来做一些事情。我在搜索时选择复选框时会出现以下问题。
当我选中所有复选框并单击保存按钮时,我获得了所有值。它符合我的期望。
但是当我通过bootstrap dataTable的内置搜索框搜索时发生了意外。这是图片视图
在这种情况下,当我按保存时,我只获得了两个值,但仍然选择了所有其他值。 如何在搜索时获取所有选定的值
以下是获取复选框值的保存按钮的jquery代码
$("#btnSave").click(function () {
var checkboxes = document.getElementsByName('foo');
var vals = "";
for (var i = 0, n = checkboxes.length; i < n; i++) {
if (checkboxes[i].checked) {
vals += "," + checkboxes[i].value;
}
}
....
//Other stuff
....
}
请帮帮我。
答案 0 :(得分:1)
当您进行搜索时,它将仅检查满足给定条件的行。所以你的搜索逻辑就像这样
if(searchCriteria==true)
{
showValue
}
即使您之前选择了值,它也不会显示所有值,因为它们不满足给定的条件。现在,在这种情况下,当您单击“保存”时,它将仅根据您的java脚本获取已检查并满足给定条件的数据表中的那些行。
现在,如果您仍然希望所有选定的值都可以使用,则可以尝试一种方法,将所选值放在某种List或Set中,并将列表对象放在会话中。因此,每次单击“保存”时,都可以从会话中检索“列表”。但我真的不明白你为什么要这样做,除非你每次都需要检索所选的值。
答案 1 :(得分:0)
我的工作就像这样完成了
var table = $('#tblReportList').dataTable();
当我在搜索dataTable时,我只得到符合搜索条件的选定值。但之前选择的值消失了。为了获得先前选择的值,我使用了以下代码...
table.$('input[type="checkbox"]').each(function () {
if (!$.contains(document, this)) {
if (this.checked) {
previousVal = previousVal + ',' + this.value;
}
}
});
现在,为了获得所选的搜索值,我使用之前发布的代码。那是
var checkboxes = document.getElementsByName('foo');
var vals = "";
for (var i = 0, n = checkboxes.length; i < n; i++) {
if (checkboxes[i].checked) {
vals += "," + checkboxes[i].value;
}
}
所以所有选中的复选框的值都是
var allValues=previousVal+vals;