Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve() {
- return function (selector, initialSuggestions) {
- var element = document.querySelector(selector);
- var liTemplate = document.createElement('li');
- liTemplate.className = 'suggestion';
- var liTemplateLink = document.createElement('a');
- liTemplateLink.className = 'suggestion-link';
- liTemplateLink.href = '#';
- var suggestionsList = document.getElementsByClassName('suggestions-list')[0];
- if (arguments.length > 1) {
- var initialSuggestionsMap = {};
- initialSuggestions.forEach(function (x) {
- if (!initialSuggestionsMap[x.toLowerCase()]) {
- if (typeof x !== 'string' || x === '') {
- return;
- }
- var liElement = liTemplate.cloneNode();
- liElement.style.display = 'none';
- var aElement = liTemplateLink.cloneNode();
- aElement.innerHTML = x;
- liElement.appendChild(aElement);
- suggestionsList.appendChild(liElement);
- initialSuggestionsMap[x.toLowerCase()] = true;
- }
- });
- }
- var input = document.getElementsByClassName('tb-pattern')[0];
- input.addEventListener('input', function () {
- var suggestions = document.getElementsByClassName('suggestion');
- var suggestionLinks = document.getElementsByClassName('suggestion-link');
- var pattern = input.value;
- for (var i = 0, len = suggestionLinks.length; i < len; i += 1) {
- if (suggestionLinks[i].innerHTML.toLowerCase().indexOf(pattern.toLowerCase()) < 0 || pattern === '') {
- suggestions[i].style.display = 'none';
- } else {
- suggestions[i].style.display = '';
- }
- }
- });
- var addButton = document.getElementsByClassName('btn-add')[0];
- addButton.addEventListener('click', function () {
- var liElement = liTemplate.cloneNode();
- var aElement = liTemplateLink.cloneNode();
- liElement.style.display = 'none';
- aElement.innerHTML = input.value;
- liElement.appendChild(aElement);
- input.value = '';
- suggestionsList.appendChild(liElement);
- });
- var suggestions = document.getElementsByClassName('suggestion');
- for (var i = 0, len = suggestions.length; i < len; i += 1) {
- suggestions[i].addEventListener('click', function () {
- var text = this.firstChild.innerHTML;
- input.value = text;
- });
- }
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement