Источник автозаполнения JQuery не обновляется - PullRequest
0 голосов
/ 17 января 2019

Я использую плагин jquery-ui autocomplete.

Вот как я реализовал плагин автозаполнения.

//autofill
$( "#TextArea" ).autocomplete({
    source: "search.php?option="+ option.toLowerCase(),
    minLength: 3
});

При изменении выпадающего списка я пытаюсь изменить параметр:

$('#Options').on('change',  function() {
        option = this.value.toLowerCase();
        var teaxtarea = $('#TextArea');
        //this is supposed to change the source string when the option value changes.
        teaxtarea.autocomplete( "option", "source", "search.php?option="+ option);
    }
});

Я получил код для обновления исходной строки из приведенного ниже вопроса.

Jquery: возможно динамическое изменение источника виджета автозаполнения?

Однако мне кажется, что это решение не работает.

Я по-прежнему получаю первую выбранную опцию, даже если я изменяю опцию в выпадающем списке. Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 17 января 2019

Предложить следующее:

$("#TextArea").autocomplete({
    source: function(req, resp){
      var option = $('#Options option:selected').val().toLowerCase();
      $.ajax({
        cache: false,
        url: "search.php",
        data: {
          option: option,
          term: req.term
        },
        dataType: "json",
        success: function(data){
          resp(data);
        }
      });
    },
    minLength: 3
});

Я думаю, что одна проблема заключается в том, что если #Options является элементом <select>, вам нужно найти выбранный дочерний элемент:

$("#Options option:selected")

Это гарантирует, что у вас есть подходящий объект, и тогда вы можете вызвать .val() на нем. Если вам нужна дополнительная помощь здесь, пожалуйста, обновите ваш пост с MCVE: https://stackoverflow.com/help/mcve

Это может решить проблему для вас. Если нет, продолжайте.

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

Когда используется строка, плагин автозаполнения ожидает, что эта строка будет указывать на ресурс URL, который будет возвращать данные JSON. Это может быть на том же хосте или на другом (должен поддерживать CORS). Плагин автозаполнения не фильтрует результаты, вместо этого добавляется строка запроса с полем term, которое серверный сценарий должен использовать для фильтрации результатов.

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

Надеюсь, это поможет.

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