Javascript / JQuery сравнить входное значение с массивом

0

Я относительно новичок в javascript и jquery. Прямо сейчас у меня есть список слов в txt файле. Я храню этот список в массиве, и я хочу сравнить содержимое этого массива с некоторым пользовательским вводом. Если есть совпадение, это конкретное слово должно отображаться.

Я также использую Jasny Bootstrap для выполнения некоторых функций типа, чтобы предсказать, какие слова пользователь хотел бы искать.

На текущем этапе моя функция находит совпадения для первого входного символа. При использовании большего количества символов функция возвращает, что совпадение не найдено. Почему это?

Вот мой HTML:

<div class="container">

  <div class="appwrapper">
    <div class="content">
        <h3>OpenTaal Woordenboek</h3>
        <p>Voer uw zoekopdracht in:<p>
        <p><input name="searchinput" id="searchinput" data-provide="typeahead" type="text" placeholder="Zoeken...">
    <p class="dict"></p>
    </div>
  </div>

</div> <!-- /container -->

И здесь jQuery:

<script src="bootstrap/js/jquery.js"></script>
<script src="bootstrap/js/bootstrap-typeahead.js"></script>

<script type="text/javascript">
var data;
var myArray = [];
var txtFile = new XMLHttpRequest();
        txtFile.open("GET", "OpenTaal-210G-basis-gekeurd.txt", true);
        txtFile.onreadystatechange = function() {
    if (txtFile.readyState === 4) {  // Makes sure the document is ready to parse.
            if (txtFile.status === 200) {  // Makes sure it found the file.
            allText = txtFile.responseText;
            data = txtFile.responseText.split("\n"); // Will separate each line into an array
            myArray = [data];
        } //"\r\n" 
    }
}
//console.write(data);

searchinput.onkeypress = function() {
//alert("The function is working!");
var formInput = document.getElementById("searchinput").value;

   if (myArray == formInput) {
   alert("There a match!");
   $('.dict').append('<div class="result">' + myArray + '</div>')
   } else {
      alert("No match has been found..");
   }
 };

Теги:
arrays
compare

3 ответа

2
Лучший ответ

Вы не использовали jquery, а только собственный javascript.

После чтения файла скрипта просто выполните:

$(searchinput).on("keypress", function() {
   if ($.inArray(formInput,myArray) > -1) {
      alert("There a match!");
   }
});

ОБНОВИТЬ

$(searchinput).on("blur", function() {
   if ($.inArray(formInput,myArray) > -1) {
      alert("There a match!");
   }
});
  • 0
    Ну, спасибо :) Это работает как шарм!
  • 0
    У меня действительно есть проблема теперь, когда он добавляет совпадения в мой абзац для каждого вводимого символа. Вы знаете, как я могу избежать этого?
Показать ещё 5 комментариев
2

Вам нужно искать весь массив, а не сравнивать его со значением:

if ($.inArray(formInput,myArray)>=0) { // returns -1 if no match
   alert("There a match!");

http://api.jquery.com/jQuery.inArray/

  • 0
    Спасибо за упоминание inArray. Это хорошо помнить :)
0

Прокрутите массив и сопоставьте входное значение с элементами массива, такими как:

   for(var i in myArray) {
       var arrayElement = myArray[i];
       if (arrayElement == formInput) {
            //Do your stuff
       }
   }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню