表过滤器不能与select2一起使用

时间:2017-11-22 15:33:32

标签: javascript jquery jquery-select2

我正在为我的项目创建表过滤器。使用输入字段它完美地工作,但我无法正常工作select2过滤器,它只是不工作..这是我的jQuery代码:

$(document).ready(function() {
  $('.filterable .filters input, select').keyup(function(e) {
    var code = e.keyCode || e.which;
    if (code == '9') return;
    var $input = $(this),
      inputContent = $input.val().toLowerCase(),
      $panel = $input.parents('.filterable'),
      column = $panel.find('.filters th').index($input.parents('th')),
      $table = $panel.find('.table'),
      $rows = $table.find('tbody tr');

    var $filteredRows = $rows.filter(function() {
      var value = $(this).find('td').eq(column).text().toLowerCase();
      return value.indexOf(inputContent) === -1;
    });

    $table.find('tbody .no-result').remove();
    $rows.show();
    $filteredRows.hide();

    if ($filteredRows.length === $rows.length) {
      $table.find('tbody').prepend($('<tr class="no-result text-center"><td colspan="' + $table.find('.filters th').length + '">Deja, bet rezultatų nepavyko rasti</td></tr>'));
    }
  });
});

$("#street").select2({
  minimumInputLength: 3
});

这是我的JsFiddle: https://jsfiddle.net/5202jsax/9/

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

<强> Working Fiddle

keyup事件不适用于列表select,您只需要添加change事件来处理选择元素,例如:

$('.filterable .filters input, select').on('input change', function(e) {
    //Your logic HERE
});

注意:我在此示例中使用input事件,因为它在处理用户输入时效率更高。

希望这有帮助。