Сохранить значение поля поиска после выбора при использовании плагина автозаполнения jquery - PullRequest
0 голосов
/ 12 января 2010

Я использую плагин автозаполнения Jörn Zaefferers для jQuery , чтобы активировать поле живого поиска, которое прекрасно работает. Пользовательский ввод отправляется в службу поиска, которая возвращает отформатированные результаты в формате Json. Когда результат выбран, значения заносятся в отдельную таблицу.

У меня возникли проблемы: после того, как пользователь выбрал результат поиска из раскрывающегося списка, я не хочу, чтобы результат поиска (параметры, введенные пользователем) перезаписывались результатом. Какое поведение по умолчанию.

Я ищу опцию, которую можно использовать, чтобы отключить эту функцию. Если ее еще нет, возможно, мне придется искать обходной путь / другой плагин.

Вот мое текущее использование плагина автозаполнения с параметрами:

$('#searchInput').autocomplete('searchUrl',
    {
        dataType: 'json',
        parse: function(data) {
            //logic to parse search results that are returned from search
            return datarows;
        },
        formatItem: function(row, i, max) {
            return row.Description;
        },
        width: 500,
        highlight: false,
        multiple: false,
        minChars: 2,
        delay: 800,
        selectFirst: false,
        autoFill: false,
        cacheLength: 10 
    })
    .result(function(event, item) {
        //logic to handle item chosen by the user
    });

1 Ответ

2 голосов
/ 12 января 2010

То, что вы хотите, не является функцией автозаполнения, поэтому плагин автозаполнения не будет работать. Вы должны изменить плагин, чтобы он не перезаписывал результат. Я смотрю на него, чтобы посмотреть, какие изменения нужно внести, и вскоре добавлю предложенное мной решение.


Что-то возникло на работе, поэтому я должен сделать это быстро.

В плагине входное значение изменяется с помощью функции $ input.val (). Когда ему передается аргумент, например:

$input.val('test')

Содержимое входа изменяется, в данном случае на «тест». Вы должны избавиться от этих линий. Обратите внимание, что вызов $ input.val () возвращает только значение без его изменения, поэтому вы хотите оставить эти строки в одиночку.

Пара, которую я нашел:

В строке 233, комментарий

$input.val(v);

В строке 297, комментарий

$input.val($input.val() + sValue.substring(lastWord(previousValue).length));

Наверняка есть и другие. Из того, что я видел, я ожидал найти хотя бы одну функцию, скрывающую меню. Используйте функцию поиска редактора.

Это может или не может сломать плагин, вам нужно будет сначала закомментировать эти строки, а затем отладить его.

Надеюсь, я вам помог, удачи:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...