Как получить массив данных с помощью этого кода?

#jquery

#jquery

Вопрос:

Это скрипт поиска в реальном времени. Livesearch работает нормально, но не может получить все данные массива. Я хотел бы получить данные ‘name’, ‘code’ и ‘location’ каждого поискового компонента.

Обновить

Вот весь код js.

https://jsfiddle.net/blueink/wyejqhsz/3/

У меня уже есть массив $data, поэтому я хотел бы добавить В него эти элементы.

 <div id="searchComponent-1">
    <div class="btn-group">
        <input type="text" name="search" placeholder="input 1" class="search form-control" size="3000"
               onkeypress="return event.keyCode!=13"/>
        <span class="searchclear glyphicon glyphicon-remove-circle"></span>
    </div>

    <ul class="list-group result"></ul>
</div>
<div id="searchComponent-2">
    <div class="btn-group">
        <input type="text" name="search" placeholder="input 2" class="search form-control" size="3000"
               onkeypress="return event.keyCode!=13"/>
        <span class="searchclear glyphicon glyphicon-remove-circle"></span>
    </div>
    <ul class="list-group result"></ul>
</div>
  

jQuery

 searchWrapper.find('.result').after('<input type="hidden" name="name" value="'   name   '">');
searchWrapper.find('.result').after('<input type="hidden" name="code" value="'   code   '">');
searchWrapper.find('.result').after('<input type="hidden" name="location" value="'   location   '">');


$(document).ready(function () {
   //then apply same method on each element
    $("#searchComponent-1").searchAndDisplay(); 
    $("#searchComponent-2").searchAndDisplay();
}
  

Ответ №1:

Я предположил, что ваш dom будет иметь входные данные, подобные этому:

   <ul class="list-group result">
    <input type="hidden" name="name" value="Name2">
    <input type="hidden" name="code" value="Code2">
    <input type="hidden" name="location" value="Location2">
  </ul>
  

Вы можете сделать следующее, чтобы получить желаемый результат:

 $(document).ready(function() {
  var result_array = []
  $('.result').each(function() {
    var name = $(this).find("input[name='name']").val();
    var code = $(this).find("input[name='code']").val();
    var location = $(this).find("input[name='location']").val();
    result_array.push([name, code, location])
  });

  console.log('As Array:')
  console.log(result_array)

});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="searchComponent-1">

  <div class="btn-group">
    <input type="text" name="search" placeholder="input 1" class="search form-control" size="3000" onkeypress="return event.keyCode!=13" />
    <span class="searchclear glyphicon glyphicon-remove-circle"></span>
  </div>

  <ul class="list-group result">
    <input type="hidden" name="name" value="Name1">
    <input type="hidden" name="code" value="Code1">
    <input type="hidden" name="location" value="Location1">
  </ul>
</div>
<div id="searchComponent-2">

  <div class="btn-group">
    <input type="text" name="search" placeholder="input 2" class="search form-control" size="3000" onkeypress="return event.keyCode!=13" />
    <span class="searchclear glyphicon glyphicon-remove-circle"></span>
  </div>

  <ul class="list-group result">
    <input type="hidden" name="name" value="Name2">
    <input type="hidden" name="code" value="Code2">
    <input type="hidden" name="location" value="Location2">
  </ul>
</div>  

Если вы хотите, чтобы ваш результат был в одномерном массиве, вы можете сделать:

 result_array.push(name, code, location)
  

Вывод будет:

 ["Name1", "Code1", "Location1", "Name2", "Code2", "Location2"]
  

Комментарии:

1. <input> является недопустимым дочерним элементом <ul>

2. @charlietfl Тем не менее HTML не выдает ошибку, если у вас есть input внутри ul справа? и он, кажется, имеет input внутри ul

3. @Rajan Большое спасибо за вашу помощь. Я очень ценю. Однако я все еще не мог получить данные элемента. это потому, что я не показывал весь js-код, я думаю. Я обновляю все js-скрипты выше. Не могли бы вы взглянуть на это, пожалуйста? и я также добавляю, что у меня уже есть массив данных $, который я хотел бы добавить в него данные этих элементов. Еще раз спасибо за вашу помощь.

4. @mikancode Мне все еще не ясно, чего именно вы хотите. У меня есть рабочий код для вашего случая: Fiddle Пожалуйста, обновите свой вопрос или дайте мне знать, что вы хотите. И когда вы хотите (например: после поиска или после выбора любого элемента)

5. @Rajan еще раз спасибо. Мне нужно время, я медленно понимаю, так что не могли бы вы подождать еще немного. Я свяжусь с вами снова. Спасибо за всю вашу помощь.