2016-08-10 3 views
-2

У меня есть массив ингредиентов:Как автозаполнять каждую строку в текстовом поле?

var ingredients = ["Apple", "Orange", "Banana"]; 

Как бы сделать так, чтобы каждая строка в текстовое поле будет автозаполнения в качестве ингредиента.

Например, если я набираю «Ap» в первой строке, он должен предлагать яблоко. В следующей строке, если я набираю «Or», он должен предлагать оранжевый.

Пожалуйста, помогите, и спасибо заранее.

+0

Что вы пробовали? Пожалуйста, покажите нам свою попытку, и мы поможем вам оттуда. – Script47

+0

Создание autosuggest, возможно, «подсказка» для предложений, новых строк и чего нет, это не просто несколько строк кода, вы просите нас написать весь плагин, и это не кодовое письмо службы, вам придется обратиться к разработчику за помощью или попробовать себя и спросить, когда ваши попытки потерпят неудачу. – adeneo

ответ

1

Вы хотите что-то ищите?

https://jsfiddle.net/pLmr3uxz/

var keysPressed = 0; 
 
    var preventLineBreak = false; 
 
    var match = ""; 
 
    var ingredients = ["Apple", "Orange", "Banana"]; 
 
    $('textarea').keydown(function (e) { 
 
     if (e.keyCode == 13 && this.selectionStart != this.selectionEnd) { 
 
      $('textarea')[0].selectionStart = $('textarea')[0].selectionEnd; 
 
      if (preventLineBreak == true) { 
 
       e.preventDefault(); 
 
       preventLineBreak = false; 
 
      } 
 
     } 
 
     keysPressed++; 
 
    }); 
 
    $('textarea').keyup(function (e) { 
 
     keysPressed--; 
 
     if(keysPressed == 0){ 
 
      var position = $('textarea')[0].selectionStart; 
 
      if (!(/[a-zA-Z0-9-_ ]/.test(String.fromCharCode(e.keyCode)))) { return false; } 
 
      var haveMatch = false; 
 
      var textValue = $('textarea').val(); 
 
      var searchValueStart = textValue.slice(0, position).lastIndexOf('\n') + 1; 
 
      var beforeSearchValue = textValue.slice(0, searchValueStart); 
 
      var afterSearchValue = textValue.slice(position, textValue.length); 
 
      var searchvalue = textValue.slice(searchValueStart, position); 
 
      ingredients.forEach(function (value) { 
 
       if (!haveMatch && searchvalue && value.slice(0, searchvalue.length).toLowerCase() == searchvalue.toLowerCase()) { 
 
        match = value; 
 
        haveMatch = true; 
 
      } 
 
      }); 
 
      if (match) { 
 
       $('textarea').val(beforeSearchValue + match + afterSearchValue); 
 
       $('textarea')[0].selectionStart = beforeSearchValue.length + searchvalue.length; 
 
       $('textarea')[0].selectionEnd = beforeSearchValue.length + match.length; 
 
       match = ""; 
 
       preventLineBreak = true; 
 
      } 
 
     } 
 
    });
<textarea></textarea> 
 
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>

+0

Вы можете использовать CTRL-M, чтобы вставить фрагмент рабочего кода прямо в свой ответ (я отредактировал ваш ответ с кодом вашего скрипта, чтобы вы могли видеть, как он отформатирован) –

+0

Отлично, спасибо. Я новичок в этом. – Eric

+0

Большое спасибо! Это именно то, что я искал! –

Смежные вопросы