在jQuery Datatables中初始化搜索输入

11

我正在尝试使用服务器端数据初始化DataTable,并设置默认搜索值,用户可以替换或细化搜索。在Datatables文档中我没有找到相关信息。

$('#example_filter label input[type=text]').val('Default Product')

上述代码设置了值,但由于没有按键事件,因此事件处理程序无法捕捉到。是否有一种方法可以链到上述代码中,就像按下回车键一样,或者我应该编写一个事件处理程序来查找字段中的更改。我对datatables和jQuery不太熟悉。


@gilly3的答案是可行的,但是使用此方法会对服务器进行两次调用而不是一次。在Datatables中是否有设置默认搜索值的方法? - bikedorkseattle
6个回答

28

这对我来说是最好的答案 :) - user3284707

14
你可以使用 .trigger() 手动触发一个事件:
$('#example_filter label input[type=text]')
    .val('Default Product')
    .trigger($.Event("keypress", { keyCode: 13 }));
根据你的代码,你可能想使用"keyup"代替。

7
"keyup"可以实现!我有类似的代码但出了一些问题,现在已经解决。谢谢! - bikedorkseattle

12

现在的正确方式是:

var table = $( '#mytable' ).DataTable();
table.search( 'initial search value' ).draw();

1
要在初始化过程之外更改它,只需执行$('#myTable').DataTable().search('string').draw();即可。 - tmthyjames
1
实际上,这并不相同。这是在数据表初始化之后应用搜索。这意味着表格初始化时没有搜索条件,然后您会使用新的搜索条件重新绘制表格。从性能角度来看,最好使用表格初始化设置中的“search”参数。 - devlin carnate
@devlincarnate 对于这种解决方案的性能影响是正确的,但我仍然发现它很有帮助。 - Peter Chaula

5

提到 oSearch 的答案使用了过时的语法。自DataTables 1.10+版本起, 正确的语法是:

$(document).ready( function() {
  $('#example').dataTable( {
    "search": {"search": "Initial search"}
  });
});

0

您可以更改默认设置:

var my_config = {
            oLanguage: {
                sSearch: ""
            },
            oSearch: {
                sSearch: "Default Search value"
            }
        };
$('#search').dataTable(my_config);


0
$('#example_filter label input[type=search]').val(i).trigger($.Event("keyup", { keyCode: 13 }));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接