Как уменьшить количество предложений, предлагаемых вводом, сопоставляя слово? - PullRequest
0 голосов
/ 22 января 2020

У меня есть input, где результат должен автозаполняться, и не должно быть более 4 предложений.

Я до сих пор делал все, что упомянуто выше. Но проблема в том, что когда я набираю слово, оно повторяет одно и то же слово 4 раза.

То, что я хочу, сопоставляя слово, уменьшает количество предложений.

В этом pi c я ищу "paypal", сопоставляя слово, оно имеет показать меньше предложений.

This is my input

Любое решение, пожалуйста.

$('#word').autocomplete({
    source : function(req, res) {
        $.ajax({
            url: "http://localhost:8080/AutoCompleteWords/AutoCompleteWordsServle",
            dataType: "json",
            data: req,
            cache: false,
            success: function(data) {
                console.log(data);
                var results = $.ui.autocomplete.filter(data, req.term);
                res(results.slice(0, 4));


            }
        });
    },

    select: function(event, ui) {
        $('#word').val(ui.item.label);
        return false;
    }
});

Ответы [ 2 ]

0 голосов
/ 23 января 2020

БЫСТРЫЙ ИСПРАВЛЕНИЕ:

Укажите предел (3) в вашем SQL.

0 голосов
/ 23 января 2020

Я бы изменил ваше автозаполнение следующим образом:

$('#word').autocomplete({
  source : "http://localhost:8080/AutoCompleteWords/AutoCompleteWordsServle"
  minLength: 3
});

Когда используется строка, плагин автозаполнения ожидает, что эта строка будет указывать на ресурс URL, который будет возвращать данные JSON. Это может быть на том же хосте или на другом (должен поддерживать CORS). Плагин автозаполнения не фильтрует результаты, вместо этого добавляется строка запроса с полем term, которое серверный сценарий должен использовать для фильтрации результатов. Например, если для параметра source установлено значение "http://example.com", а пользователь вводит foo, запрос GET будет отправлен на http://example.com?term=foo. Сами данные могут быть в том же формате, что и локальные данные, описанные выше.

На стороне сервера вы затем извлечете term из запроса и выполните свой запрос следующим образом:

SELECT words FROM TableName WHERE LIKE '$term%' LIMIT 4;

Это гарантирует, что такой термин, как "pay", получит только 4 результата и вернет список слов, таких как "payment", "paypal", "pays" et c, в зависимости от набора данных.

The minLength гарантирует, что вы не отправляете "p" или "pa" в сценарий. Так как это будет генерировать очень большой набор результатов в первую очередь. Таким образом, до тех пор, пока мы отправляем не менее 3 символов, мы должны сузить результат до хорошей суммы.

...