JQuery автозаполнение, как искать слова вместо строки - PullRequest
3 голосов
/ 17 августа 2010

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

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

Пример:

Когда пользователь вводит «Матиас Антверпен», он должен видеть все адреса, содержащие эти слова. В примере он должен показывать 1 строку, которая является второй.

<script>
var addresses = [
    { name: "Frederick Dereave Gentstreet 4 Gent" },
    { name: "Mathias Derian Meilaan 9 Antwerp" },
    { name: "Mathias Hors frelaan 5 Kortrijk" }
];    

$(document).ready(SetAutoComplete);

function SetAutoComplete() {

    $("#testveld").autocomplete(emails,
        {
            matchContains: "word"
        }
    );
}
</script>
<input type="text" id="testveld" style='width:300px'/>

Ответы [ 2 ]

7 голосов
/ 17 августа 2010

Я изменил код matchSubset в jquery.autocomplete.js, который включает поведение, которое я искал.

function matchSubset(s, sub) {

    var arraySub=sub.split(" ");

    if (!options.matchCase) 
        s = s.toLowerCase();
    var i = s.indexOf(sub);
    if (options.matchContains == "word"){
        i = s.toLowerCase().search("\\b" + sub.toLowerCase());
    }

    //addition for split words
    if (options.matchContains == "splittedword"){
        for(itemindex=0;itemindex<arraySub.length;itemindex++){

            i = s.toLowerCase().search(arraySub[itemindex].toLowerCase());
            if(i==-1){
                break;
            }
        }
    }

    if (i == -1) return false;
    return i == 0 || options.matchContains;
};
0 голосов
/ 17 августа 2010

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

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