Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Автодополнение (https://javascript.ru/forum/misc/31147-avtodopolnenie.html)

Bebarr Swallow 28.08.2012 16:07

Автодополнение
 
Имеем массив текстовых значений:
var db = [
  "drawLine",
  "drawCircle",
  "fill",
  ...
];


Есть тестовое поле, к которому нужно прикрутить функцию "автодополнения". Т.е. начинаем писать - "dra", а она должна показать возможные варианты (как в поиске Google и т.п.).

lord2kim 28.08.2012 16:20

Bebarr Swallow, попробуйте jQuery AutoComplete

Bebarr Swallow 28.08.2012 17:44

Да ну этот jQuerry. Мне что-то попроще.

Пока такое сделал:
<input type="text" id="autocomplete" />
<div id="autocomplete_result"></div>​

<script>
var db = [
  "drawLine",
  "drawCircle",
  "fill"
];

autocomplete.addEventListener("keyup", function() {
  if(!autocomplete.value) {
    autocomplete_result.innerHTML = "";
    return;
  }
  var a = new RegExp("^" + autocomplete.value, "i");
  for(var x = 0, b = []; x < db.length; x++) {
    if(a.test(db[x])) b.push(db[x]);
  }
  autocomplete_result.innerHTML = b.join("<br>");
});
​</script>

Bebarr Swallow 28.08.2012 19:18

Вот так получилось довольно не дурно - http://jsfiddle.net/Yz2FZ/embedded/result/

Bebarr Swallow 28.08.2012 19:33

Решил сохранить в файл а получаю только это:
Uncaught SyntaxError: Unexpected token ILLEGAL AutoComplete.html:89
Главное что на сайте работает! А в файле не хочет.

Вот ссылка на файл - http://rghost.ru/private/40057345/5c...ae4f463420f103. Буду благодарен, если кто скажет в чем проблема.

lord2kim 28.08.2012 19:41

Bebarr Swallow, все работает, только для IE нужно использовать attachEvent
http://javascript.ru/tutorial/events/intro

Bebarr Swallow 28.08.2012 19:48

Цитата:

Сообщение от lord2kim (Сообщение 201222)
Bebarr Swallow, все работает, только для IE нужно использовать attachEvent
http://javascript.ru/tutorial/events/intro

Я в курсе про attachEvent. Уверяю, у меня последняя стабильная версия браузера Google Chrome, и у меня при загрузке страницы в консоли возникает ошибка. "Автодополнение", конечно же, там тоже не работает.

UPD: удалил и написал заново последнюю строку - все заработало


Часовой пояс GMT +3, время: 11:02.