Функция ввода, если поиск не работает - PullRequest
0 голосов
/ 11 июля 2020

Я пробовал приведенный ниже код, но когда я нажимаю клавишу ввода, ничего не происходит (он должен выполнять функцию поиска).

<head>
  <script type="text/javascript">
    $(document).ready(function() {
      prepareSearch($('#searchBox'), {
        'searchLine': '.searchTarget div.product',
        'searchSightPoint': 'div.stand, span.apron, div.aircraft, div.image',
        'fade': true,
        'contrastString': false
      });
      $('#standsearch').submit(function(e) {
        e.preventDefault();
      });
    });
    var input = document.getElementById("searchBox");
    input.addEventListener("keyup", function(event) {
      if (event.keyCode === 13) {
        event.preventDefault();
        document.getElementById("btn").click();
      }
    });
  </script>
</head>

<body>
  <div class="row" id="standsearch">
    <form class="form-search" action="#standsearch">
      <div class="input-append">
        <input type="text" id="searchBox" class="span2 search-query" placeholder="Search Stands" />
        <button type="button" id="btn" class="btnsearch">Find</button>
      </div>
    </form>
  </div>
</body>

Я пробовал использовать onclick = "", однако я не уверен, что мне следует добавьте в это.

1 Ответ

0 голосов
/ 11 июля 2020

Похоже, ваш главный вопрос - как вызвать функцию поиска, когда (имитируемый) щелчок происходит по определенному элементу. Атрибут onclick, вероятно, будет работать нормально, но, как правило, он уступает использованию прослушивателя событий .

Непонятно, как предполагались биты вашего более сложного образца кода чтобы соответствовать друг другу, поэтому здесь чистый пример, показывающий, как получить значение элемента ввода (при нажатии ENTER) и передать это значение в функцию поиска .

(Обратите внимание, что имитация На самом деле щелчок не является необходимым, поскольку мы могли бы просто вызвать одну и ту же функцию поиска от обоих слушателей, вместо того, чтобы один слушатель полагался на другого, чтобы инициировать поиск.)

// Defines global variables
const
  searchBox = document.getElementById("searchBox"),
  btn = document.getElementById("btn"),
  haystack = document.getElementById("sentence").textContent.split(" ");


// Calls `handleEnterKeyInSearchBox` when `keyup` event happens in searchBox
searchBox.addEventListener("keyup", handleEnterKeyInSearchBox);
// Calls `handleButtonClick` when `click` event happens on btn
btn.addEventListener("click", handleButtonClick);


// Defines `handleEnterKeyInSearchBox` function
function handleEnterKeyInSearchBox(event){
  // Simulates a click on #btn if ENTER is pressed while #searchBox has focus
  if (event.keyCode === 13) {
    event.preventDefault();
    btn.click();
  }
}

// Defines `handleButtonClick` function
function handleButtonClick(event){
  const needle = searchBox.value; // Gets item to search for
  doSearch(needle, haystack); // Calls search function
}

// Defines a search function to use
function doSearch(theNeedle, theHaystack){
  // Gets index of word in sentence (or -1 if word is not found)
  const index = theHaystack.indexOf(theNeedle);
  // Reports result
  if(index > -1){
    console.log(`Item '${theNeedle}' found at index ${index}`);
  }
  else{
    console.log(`Could not find item '${theNeedle}'`);
  }
}
<p id="sentence">The quick brown fox jumps over the lazy dog</p>
<input id="searchBox" />
<button id="btn">Find</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...