1

我使用http://www.dynatable.com/并且有一个用于过滤数据的搜索输入。问题是它适用于输入/失去焦点等,我想在每个字母更改时使用它。

4

3 回答 3

3

您可以更改 dynatable 以适应您的需求。在 jquery.dynatable.js(版本 0.3.1)的第 1215 行,搜索是在输入键时执行的。您可以将其更改为 keyup 而无需等待 enter 按键。默认代码:

        $search
        .bind(settings.inputs.queryEvent, function() {
          obj.queries.runSearch($(this).val());
        })
        .bind('keyup', function(e) {
          if (e.which == 13) {
            obj.queries.runSearch($(this).val());
            e.preventDefault();
          }
        });

修改后的代码:

        $search
        .bind(settings.inputs.queryEvent, function() {
          obj.queries.runSearch($(this).val());
        })
        .bind('keyup', function(e) {
          obj.queries.runSearch($(this).val());
          e.preventDefault();
        });
于 2014-11-05T06:02:02.840 回答
1

对 jquery.dynatable.js 代码的以下更改将执行您想要的操作,并且如果您正在使用“x”清除搜索输入框,也会更新结果。clear 也可以工作的原因是使用的事件是“input”而不是“keyup”或“change”,原因在文档中有详细说明。

输入事件不同,更改事件不一定会针对元素值的每次更改而触发。

原始代码

$search
  .bind(settings.inputs.queryEvent, function() {
    obj.queries.runSearch($(this).val());
  })
  .bind('kepress', function(e) {
    if (e.which == 13) {
      obj.queries.runSearch($(this).val());
      e.preventDefault();
    }
  });

修改后的代码

$search
  .bind(settings.inputs.queryEvent, function() {
    obj.queries.runSearch($(this).val());
  })
  .bind('input', function(e) {
    obj.queries.runSearch($(this).val());
    e.preventDefault();
  });

注意:基于 nexuscreator 的回答。非常好的答案,帮助很大,谢谢。

于 2018-04-13T05:45:22.507 回答
0

为我工作:)

$search
    .bind(settings.inputs.queryEvent, function() {
      obj.queries.runSearch($(this).val());
    })
    .bind('keyup', function(e) {
      obj.queries.runSearch($(this).val());
      e.preventDefault();
    });
于 2014-11-17T04:06:40.060 回答