【问题标题】:Filtering not working from select从选择中过滤不起作用
【发布时间】:2023-04-08 16:16:01
【问题描述】:

我创建了一个带有固定标题和排序的 dataTable 的应用程序,该应用程序运行良好,但问题是我通过下拉列表过滤了名称,当我选择特定名称时该名称不起作用。

我的代码如下。

谁能告诉我一些解决方案:

Working Demo

$(document).ready(function () {
    myTable = $('#myTable').dataTable({
        "bInfo": false,
        "bLengthChange": false,
        "bPaginate": false,
        "scrollY": "300px",
        "scrollX": "100%",
        "scrollCollapse": true,
    });

    new $.fn.dataTable.FixedColumns(myTable, {
        leftColumns: 1,
        rightColumns: 1
    });

    $("#name").on('change', function () {
        filterNames();
    });

    function filterNames() {
        var name = $('#name option:selected').attr('value');
        myTable.fnFilter(name, 14, false, false, false, false);
    }
});

【问题讨论】:

  • 您是否调试以查看是否在“var name = $('#name option:selected').attr('value');”处填充了任何值?
  • jquery.dataTables.min.js放在jquery 1.10.js之后,并尝试将代码包装在jQuery(function($) {而不是$(document).ready(function () {

标签: jquery datatable filtering html-select


【解决方案1】:

您在fnFilter 中输入了错误的索引。找到下面的工作代码,

JSFiddle

问题在于on 事件,您应该将选择器提供给on 函数

否则使用

Delegate:它只是附加事件运行时。更多信息请参考http://api.jquery.com/delegate/

需要使用 $(this) 来获取事件处理程序内部的选定值。

【讨论】:

  • 当我们把选择放在外面然后过滤工作,但是为什么当我们把选择放在表头中时它没有发生同样的情况,就像这个小提琴jsfiddle.net/o2xct89e/1
  • @parag:如果您使用委托,它会触发事件。但 name 变量获取最后选择的值。
  • @Alex:我已经更新了上面的答案(JSFiddle)。检查它是否符合您的需要。
  • @AmarKamthe 是的,这就是我想要的,你能解释一下问题是什么以及使用委托的重要性是什么
  • 为什么使用委托解决了这个问题?因为我什至使用 setTimeout 在下拉菜单上注册更改事件,如果它在启动时间更改,仍然不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多