Javascript автозаполнение источника из значения div динамически не работает

0

Я пишу функцию javascript в php файле для выполнения автозаполнения. я должен принимать входные данные из значения div, где это похоже

value1
value2
... 

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

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

Select Value: <input id="autocomplete">

<script type="text/javascript">

        function test()
 {

             var div_values = document.getElementById("id_div_values").innerHTML;
             var div_val_arr = div_values.split("</li>");
             var search_val ="[";


                  for (var j = 0; j < div_val_arr.length-1; j++)
                  {                                                      
                     search_val = search_val+"\""+div_val_arr[j].replace("<li>","")+"\"";

                   }
              search_val = search_val+"]";

            $("#autocomplete").autocomplete({
               source: search_val
            });           

         }
      </script>

но он не работает. Я проверил значение div, которое он правильно выполнил, и сформировал его в массиве, но он не работает. если я поставлю источник как

source: ["value1","value2","value3","value4"];

то он работает отлично. я не получаю, где я делаю ошибку. Заранее благодарим за ваши ценные предложения.

  • 0
    предоставить jsfiddle.
Теги:
autocomplete

3 ответа

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

Javascript

$(document).ready(function() {
var div_val_arr = [];
$("#id_div_values li").each(function() {
    div_val_arr.push($(this).text());
});
$('#autocomplete').on('focus click touchstart',function() {
$( "#autocomplete" ).autocomplete({
source: div_val_arr
});
});
});

HTML

    <div id="id_div_values">
        <ul>
    <li>some value</li>
    <li>another value</li>
    <li>value3</li>
    <li>value4</li>
    <li>value5</li></ul>
    </div>

<input type="text" title="search" id="autocomplete">

скрипка http://jsfiddle.net/arfrbzbz/1/

  • 0
    Спасибо, Питер! jsfiddle очень помог и получил желаемый результат.
1

Сначала вам не хватает "," (запятая) в следующем коде

search_val = search_val+"\""+div_val_arr[j].replace("<li>","")+"\"";

Выше кода сделает массив следующим:

search_val =["value1""value2""value3""value4"];

Добавьте запятую и убедитесь, что она будет генерировать массив следующим образом.

search_val =["value1","value2","value3","value4"];
  • 0
    Спасибо за ответ, но я добавил "\", "в коде, но он не работает.
  • 0
    Вы не можете сделать это, используя метод выше ("\", "), потому что в конце будет дополнительная запятая. Search_val = [" value1 "," value2 "," value3 "," value4 ",]; Вам необходимо удалить эта запятая или управляйте этой запятой.
Показать ещё 3 комментария
0

Вы можете проверить, назначив div_val_arr в качестве источника для вашего автоматического завершения

$("#autocomplete").autocomplete({
           source: div_val_arr
 });           

Ещё вопросы

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