Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     return function (selector, initialSuggestions) {
  3.         var element = document.querySelector(selector);
  4.  
  5.         var liTemplate = document.createElement('li');
  6.         liTemplate.className = 'suggestion';
  7.         var liTemplateLink = document.createElement('a');
  8.         liTemplateLink.className = 'suggestion-link';
  9.         liTemplateLink.href = '#';
  10.         var suggestionsList = document.getElementsByClassName('suggestions-list')[0];
  11.  
  12.  
  13.  
  14.         if (arguments.length > 1) {
  15.  
  16.             var initialSuggestionsMap = {};
  17.             initialSuggestions.forEach(function (x) {
  18.                 if (!initialSuggestionsMap[x.toLowerCase()]) {
  19.                     if (typeof x !== 'string' || x === '') {
  20.                         return;
  21.                     }
  22.                     var liElement = liTemplate.cloneNode();
  23.                     liElement.style.display = 'none';
  24.                     var aElement = liTemplateLink.cloneNode();
  25.  
  26.                     aElement.innerHTML = x;
  27.                     liElement.appendChild(aElement);
  28.  
  29.  
  30.                     suggestionsList.appendChild(liElement);
  31.                     initialSuggestionsMap[x.toLowerCase()] = true;
  32.                 }
  33.  
  34.             });
  35.  
  36.         }
  37.  
  38.  
  39.         var input = document.getElementsByClassName('tb-pattern')[0];
  40.         input.addEventListener('input', function () {
  41.             var suggestions = document.getElementsByClassName('suggestion');
  42.             var suggestionLinks = document.getElementsByClassName('suggestion-link');
  43.             var pattern = input.value;
  44.  
  45.             for (var i = 0, len = suggestionLinks.length; i < len; i += 1) {
  46.                 if (suggestionLinks[i].innerHTML.toLowerCase().indexOf(pattern.toLowerCase()) < 0 || pattern === '') {
  47.                     suggestions[i].style.display = 'none';
  48.                 } else {
  49.                     suggestions[i].style.display = '';
  50.                 }
  51.             }
  52.  
  53.         });
  54.  
  55.         var addButton = document.getElementsByClassName('btn-add')[0];
  56.         addButton.addEventListener('click', function () {
  57.             var liElement = liTemplate.cloneNode();
  58.             var aElement = liTemplateLink.cloneNode();
  59.             liElement.style.display = 'none';
  60.             aElement.innerHTML = input.value;
  61.             liElement.appendChild(aElement);
  62.  
  63.             input.value = '';
  64.  
  65.             suggestionsList.appendChild(liElement);
  66.         });
  67.  
  68.         var suggestions = document.getElementsByClassName('suggestion');
  69.  
  70.         for (var i = 0, len = suggestions.length; i < len; i += 1) {
  71.             suggestions[i].addEventListener('click', function () {
  72.                 var text = this.firstChild.innerHTML;
  73.                 input.value = text;
  74.  
  75.             });
  76.         }
  77.     };
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement