#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 еще раз спасибо. Мне нужно время, я медленно понимаю, так что не могли бы вы подождать еще немного. Я свяжусь с вами снова. Спасибо за всю вашу помощь.