Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/40: Рейтинг темы: голосов - 40, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 13.04.2017
Сообщений: 33

Как сделать элемент поиска с выпадающим списком (живой поиск) без использования сторонних библиотек JS и CSS

19.07.2019, 16:37. Показов 8576. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
можно с примерами дальше сам разберусь
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.07.2019, 16:37
Ответы с готовыми решениями:

Как реализовать на C# алгоритм blockchain без использования сторонних библиотек?
Добрый день! Хочу реализовать алгоритм blockchain в своём приложении (не для денежных операций). Какие стандартные объекты уже...

Архивирование каталога без использования сторонних библиотек
может кто сталкивался...кодом поделится;)

Парсинг HTML без использования сторонних библиотек
Доброго времени суток всем кто читает сеё сообщение %) Прошу помочь кодом, советами, примером, мыслями и т.д. в распарсивании html файла...

5
469 / 334 / 144
Регистрация: 16.02.2018
Сообщений: 930
19.07.2019, 16:46
Цитата Сообщение от Владамир Посмотреть сообщение
без использования сторонних библиотек JS
Вам статика нужна? Или что бы и работало сразу)?
0
0 / 0 / 0
Регистрация: 13.04.2017
Сообщений: 33
19.07.2019, 17:09  [ТС]
любой пример, чтобы работал. там разберусь
0
469 / 334 / 144
Регистрация: 16.02.2018
Сообщений: 930
19.07.2019, 17:23
Цитата Сообщение от Владамир Посмотреть сообщение
любой пример, чтобы работал. там разберусь
любой пример

Добавлено через 4 минуты
Цитата Сообщение от Владамир Посмотреть сообщение
без использования сторонних библиотек JS и CSS
и да, вам вряд ли предложат что-то не сторонние. Ибо мало кто так заморачивается.
0
 Аватар для arcmag
347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
19.07.2019, 18:55
Ну вот вам мой вариант, переключение через клавиатуру я добавлять не стал, сделал только мышкой. Можно конечно заморочится и сделать получше, но в качестве примера в принципе сойдёт.

https://codepen.io/arcmag/pen/mNyzmP?editors=0010

HTML5
1
<input id="input">
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.drop-down__list {
  position: absolute;
  list-style-type: none;
  padding: 0;
  margin: 5px 0 0 0;
}
 
.drop-down__item {
  padding: 7px;
  background: #000;
  color: #fff;
  margin-bottom: 2px;
  transition: all .2s;
}
 
.drop-down__item:hover {
  background: grey;
}
 
.drop-down__item:active {
  transition: none;
  background: orange;
}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// массив со списком стран
const data = ['Afghanistan', 'Albania', 'Algeria', 'American Samoa', 'Andorra', 'Angola', 'Anguilla', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Aruba', 'Australia', 'Austria', 'Azerbaijan', 'Bangladesh', 'Barbados', 'Bahamas', 'Bahrain', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bermuda', 'Bhutan', 'Bolivia', 'Bosnia and Herzegovina', 'Botswana', 'Brazil', 'British Indian Ocean Territory', 'British Virgin Islands', 'Brunei Darussalam', 'Bulgaria', 'Burkina Faso', 'Burma', 'Burundi', 'Cambodia', 'Cameroon', 'Canada', 'Cape Verde', 'Cayman Islands', 'Central African Republic', 'Chad', 'Chile', 'China', 'Christmas Island', 'Cocos (Keeling) Islands', 'Colombia', 'Comoros', 'Congo-Brazzaville', 'Congo-Kinshasa', 'Cook Islands', 'Costa Rica', 'Croatia', 'Cura?ao', 'Cyprus', 'Czech Republic', 'Denmark', 'Djibouti', 'Dominica', 'Dominican Republic', 'East Timor', 'Ecuador', 'El Salvador', 'Egypt', 'Equatorial Guinea', 'Eritrea', 'Estonia', 'Ethiopia', 'Falkland Islands', 'Faroe Islands', 'Federated States of Micronesia', 'Fiji', 'Finland', 'France', 'French Guiana', 'French Polynesia', 'French Southern Lands', 'Gabon', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Gibraltar', 'Greece', 'Greenland', 'Grenada', 'Guadeloupe', 'Guam', 'Guatemala', 'Guernsey', 'Guinea', 'Guinea-Bissau', 'Guyana', 'Haiti', 'Heard and McDonald Islands', 'Honduras', 'Hong Kong', 'Hungary', 'Iceland', 'India', 'Indonesia', 'Iraq', 'Ireland', 'Isle of Man', 'Israel', 'Italy', 'Jamaica', 'Japan', 'Jersey', 'Jordan', 'Kazakhstan', 'Kenya', 'Kiribati', 'Kuwait', 'Kyrgyzstan', 'Laos', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libya', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Macau', 'Macedonia', 'Madagascar', 'Malawi', 'Malaysia', 'Maldives', 'Mali', 'Malta', 'Marshall Islands', 'Martinique', 'Mauritania', 'Mauritius', 'Mayotte', 'Mexico', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Montserrat', 'Morocco', 'Mozambique', 'Namibia', 'Nauru', 'Nepal', 'Netherlands', 'New Caledonia', 'New Zealand', 'Nicaragua', 'Niger', 'Nigeria', 'Niue', 'Norfolk Island', 'Northern Mariana Islands', 'Norway', 'Oman', 'Pakistan', 'Palau', 'Panama', 'Papua New Guinea', 'Paraguay', 'Peru', 'Philippines', 'Pitcairn Islands', 'Poland', 'Portugal', 'Puerto Rico', 'Qatar', 'R?union', 'Romania', 'Russia', 'Rwanda', 'Saint Barth?lemy', 'Saint Helena', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Martin', 'Saint Pierre and Miquelon', 'Saint Vincent', 'Samoa', 'San Marino', 'S?o Tom? and Pr?ncipe', 'Saudi Arabia', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Sint Maarten', 'Slovakia', 'Slovenia', 'Solomon Islands', 'Somalia', 'South Africa', 'South Georgia', 'South Korea', 'Spain', 'Sri Lanka', 'Sudan', 'Suriname', 'Svalbard and Jan Mayen', 'Sweden', 'Swaziland', 'Switzerland', 'Syria', 'Taiwan', 'Tajikistan', 'Tanzania', 'Thailand', 'Togo', 'Tokelau', 'Tonga', 'Trinidad and Tobago', 'Tunisia', 'Turkey', 'Turkmenistan', 'Turks and Caicos Islands', 'Tuvalu', 'Uganda', 'Ukraine', 'United Arab Emirates', 'United Kingdom', 'United States', 'Uruguay', 'Uzbekistan', 'Vanuatu', 'Vatican City', 'Vietnam', 'Venezuela', 'Wallis and Futuna', 'Western Sahara', 'Yemen', 'Zambia', 'Zimbabwe'];
 
class DropDownList {
  constructor({element, data}) {
    this.element = element;
    this.data = data;
    
    this.listElement = null;
    
    this._onElementInput = this._onElementInput.bind(this);
    this._onItemListClick = this._onItemListClick.bind(this);
    
    this.bind();
  }
  
  _onElementInput() {
    this.removeList();
    this.createList(this.data.filter(it => it.toLowerCase().indexOf(this.element.value.toLowerCase()) !== -1));
    this.appendList();
  }
  
  _onItemListClick({target}) {
    this.element.value = target.textContent;
    this.removeList();
  }
  
  createList(data) {
    this.listElement = document.createElement(`ul`);
    this.listElement.className = `drop-down__list`;
    this.listElement.innerHTML = data.map(it => `<li class="drop-down__item">${it}</li>`).join(``);
    
    [...this.listElement.querySelectorAll(`.drop-down__item`)].forEach(it => it.addEventListener(`click`, this._onItemListClick));
  }
  
  appendList() {
    const {left, width, bottom} = this.element.getBoundingClientRect();
    this.listElement.style.width = width + `px`;
    this.listElement.style.left = left + `px`;
    this.listElement.style.top = bottom + `px`;
    document.body.appendChild(this.listElement);
  }
  
  removeList() {
    if (this.listElement) {
      this.listElement.remove();
      this.listElement = null;
    }
  }
  
  bind() {
    this.element.addEventListener(`input`, this._onElementInput);
  }
}
 
new DropDownList({ element: document.querySelector(`#input`), data });
1
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
20.07.2019, 04:17
Лучший ответ Сообщение было отмечено Qwerty_Wasd как решение

Решение

Цитата Сообщение от Владамир Посмотреть сообщение
без использования сторонних библиотек JS и CSS
https://codepen.io/Mr_Sergo/pen/EqjYoM
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<input list="my-list">
<datalist id="my-list">
    <option value="Абакан">
    <option value="Азов">
    <option value="Александров">
    <option value="Алексин">
    <option value="Альметьевск">
    <option value="Братск">
    <option value="Брянск">
    <option value="Бугульма">
    <option value="Буденновск">
    <option value="Бузулук">
    <option value="Магадан">
    <option value="Магнитогорск">
    <option value="Майкоп">
    <option value="Махачкала">
    <option value="Междуреченск">
</datalist>
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.07.2019, 04:17
Помогаю со студенческими работами здесь

Рисование 3D фигур без использования сторонних библиотек
в последнее время стало интересно как рисовать математически 3D фигуры в c# при этом не используя сторонние библиотеки то есть (OpenGl...

Возможно ли чтение XML файла с C++ без использования сторонних библиотек?
Если нет, то какие библиотеки лучше?

Обработка и проигрывание звукового файла без использования сторонних библиотек
Всем доброго времени суток! Мне задали в качестве экзаменационного задания по WINAPI, написать mp3-проигрыватель. Главное условие,...

Чтение ID3v2 в MP3 тегов без использования сторонних библиотек
Здравствуйте господа. Я столкнулся с проблемой при чтении ID3v2 тегов: в случае использования сторонних библиотек, программа переставала...

Вывести структуру html в TreeView, игнорируя комментарии, без использования сторонних библиотек
Помогите плиз, нужно вывести структуру HTML в TreeView игноря комментарии. Пользоваться сторонними библиотеками нельзя. Если кто может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru