Advertisement
valchak

DOM Search

Feb 22nd, 2018
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>DOM Search</title>
  6.     <script src="https://code.jquery.com/jquery-3.1.0.min.js"
  7.             integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s="
  8.             crossorigin="anonymous"></script>
  9.     <style>
  10.         .add-controls, .search-controls {
  11.             width: 20em;
  12.             height: 2em;
  13.         }
  14.         input {
  15.             position: absolute;
  16.             left:6em;
  17.         }
  18.         .button {
  19.             background-color: darkgrey;
  20.             color: white;
  21.             font-weight: bold;
  22.             position: absolute;
  23.             left: 15em;
  24.             border: 1px solid black;
  25.             padding: 0 5px 0 5px;
  26.         }
  27.         .result-controls .button {
  28.             position: relative;
  29.             left: 0;
  30.             font-size: 50%;
  31.             margin-right:1em;
  32.             padding: 0;
  33.             bottom: 3px;
  34.         }
  35.         li {
  36.             list-style-type: none;
  37.         }
  38.     </style>
  39. </head>
  40. <body>
  41. <div id="content"></div>
  42. <!--<script src="p05_DOM%20Search.js"></script>-->
  43. <!--<script src="p05_test.js"></script>-->
  44. <script>
  45.     domSearch("#content",false);
  46.  
  47.     function domSearch(selector, isCaseSensitive) {
  48.         let contentDiv = $(selector);
  49.  
  50.         let divAdd = $('<div class="add-controls">');
  51.         let labelAdd = $('<label>Enter text:</label>');
  52.         let inputAdd = $('<input>');
  53.         let anchorAdd = $('<a class="button" style="display: inline-block">Add</a>');
  54.  
  55.         inputAdd.appendTo(labelAdd);
  56.         labelAdd.appendTo(divAdd);
  57.         anchorAdd.appendTo(divAdd);
  58.         divAdd.appendTo(contentDiv);
  59.  
  60.         let divSearch = $('<div class="search-controls">');
  61.         let labelSearch = $('<label>Search:</label>');
  62.         let inputSearch= $('<input>');
  63.  
  64.         inputSearch.appendTo(labelSearch);
  65.         labelSearch.appendTo(divSearch);
  66.         divSearch.appendTo(contentDiv);
  67.  
  68.         let divResult = $('<div class="result-controls">');
  69.         let ulResult = $('<ul class="items-list"></ul>');
  70.  
  71.  
  72.         ulResult.appendTo(divResult);
  73.         divResult.appendTo(contentDiv);
  74.  
  75.         let ul = $('.items-list');
  76.  
  77.         let addBtn = $('.add-controls a');
  78.         let addText = $('.add-controls input');
  79.         let searchInput = $('.search-controls input');
  80.  
  81.         addBtn.on('click', addElements);
  82.         searchInput.on('input', searchElements);
  83.  
  84.         function addElements(event) {
  85.             let li = $('<li class="list-item"></li>');
  86.             let anchor = $('<a class="button">X</a>').on('click', deleteElements);
  87.             let elementValue = $(addText).val();
  88.             let element = $('<strong>').text(elementValue);
  89.  
  90.             anchor.appendTo(li);
  91.             element.appendTo(li);
  92.             li.appendTo(ul);
  93.  
  94.             $('div.add-controls input').val('');
  95.         }
  96.  
  97.         function searchElements(event) {
  98.             let searchValue = $(this).val();
  99.             $(ul).find('li').each((index, element) => {
  100.                 let currentListElement = element.textContent;
  101.                 let currentSearchValue = searchValue;
  102.                 if(!isCaseSensitive){
  103.                     currentSearchValue = currentSearchValue.toLowerCase();
  104.                     currentListElement = currentListElement.toLowerCase();
  105.                 }
  106.                 if (currentSearchValue.length > 0 && currentListElement.includes(currentSearchValue)) {
  107.                     $(element).css('display', 'none');
  108.                
  109.                 } else {
  110.                     $(element).css('display', 'block');
  111.                 }
  112.             });
  113.         }
  114.  
  115.         function deleteElements(event) {
  116.             event.target.parentElement.remove();
  117.         }
  118.     }
  119. </script>
  120. </body>
  121. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement