Привязать 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();
});