Привязать dynatable поиск к onchange

Я использую http://www.dynatable.com/ и есть вход для поиска данных для фильтрации данных. Проблема в том, что он работает при нажатии ввода / потери фокуса и т. Д., И я хочу использовать его при каждом изменении буквы.

3 ответа

Вы можете изменить dynatable для удовлетворения ваших потребностей. В строке 1215 файла jquery.dynatable.js(версия 0.3.1) поиск выполняется при нажатии клавиши ввода. Вы можете изменить это на keyup без ожидания нажатия клавиши ввода. Код по умолчанию:

        $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();
        });

Следующее изменение в коде jquery.dynatable.js сделает то, что вы хотите, а также обновит результаты, когда поле ввода поиска будет очищено с помощью "x", если вы его используете. Причина, по которой очистка также будет работать, заключается в том, что используемое событие - это "ввод" вместо "keyup" или "изменение", по причинам, подробно изложенным в документации.

В отличие от входного события, событие изменения не обязательно запускается для каждого изменения значения элемента.

Оригинальный код

$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. Очень хороший ответ, много помогло спасибо.

Работал на меня:)

$search
    .bind(settings.inputs.queryEvent, function() {
      obj.queries.runSearch($(this).val());
    })
    .bind('keyup', function(e) {
      obj.queries.runSearch($(this).val());
      e.preventDefault();
    });
Другие вопросы по тегам