Javascript: соответствие параметров списка данных на основе ввода

У меня есть текстовый ввод с даталистом. Этот datalist динамически заполнен php:

<input type="text" name="city" list="cities" id="city">
<datalist id="cities">
<?php
foreach($cities as $city){
echo '<option value="'.$city.'" />';
}
?>
</datalist>
</input>

Есть ли простой способ сохранить все параметры списка данных в массиве javascript?

РЕДАКТИРОВАТЬ:

Или лучше: есть ли способ проверить с помощью javascript, является ли текст в поле ввода опцией в списке данных?

1

Решение

Ответьте за свою «Или лучшую часть»

Это должно быть довольно легко сделать просто в JavaScript, как вы просите, без конвертации в массив json и запуска соответствия javascript.

Прикреплен пример фрагмента. Вот пример, который проверяет, соответствует ли значение, введенное во вводе, любому из параметров или нет.

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

$("#city").on('keyup',function(e){
var option = $('#cities option').filter(function() {
return this.value === $("#city").val();
}).val();

if(option) $("#output").html("Match Found:"+ option)
else $("#output").html("");
});
#output{
margin-top: 30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><input type="text" list="cities" id="city">

<datalist id="cities">
<option value="Volvo">
<option value="Saab">
<option value="Mercedes">
<option value="Audi">
</datalist>

<span id="output"></span>
1

Другие решения

Да, есть:

var cities = <?=json_encode($cities)?>;
2