Javascript:根据输入匹配数据列表选项

Javascript:根据输入匹配数据列表选项,javascript,php,html,input,datalist,Javascript,Php,Html,Input,Datalist,我有一个带有数据列表的文本输入。此数据列表由php动态填充: <input type="text" name="city" list="cities" id="city"> <datalist id="cities"> <?php foreach($cities as $city){ echo '<option value="'.$city.'" />'; } ?>

我有一个带有数据列表的文本输入。此数据列表由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检查输入字段中的文本是否是数据列表中的选项?

有:

var cities = <?=json_encode($cities)?>;
var cities=;
是的,有:

var cities = <?=json_encode($cities)?>;
var cities=;
回答你的“或更好的部分”

如果不转换为json数组并运行JavaScript匹配,只需按要求使用JavaScript就可以很容易地做到这一点

附加了一个示例片段。下面的示例检查输入中键入的值是否与任何选项匹配

它是这样做的,在每次输入时,它都会检查数据列表中是否有与用户输入的输入匹配的选项。您可以更改过滤器函数的
return
部分以进行任何类型的匹配

$(“#城市”).on('keyup',函数(e){
var option=$('#cities option')。过滤器(函数(){
返回this.value==$(“#城市”).val();
}).val();
if(option)$(“#output”).html(“找到匹配项:”+option)
else$(“#输出”).html(“”);
});
#输出{
边缘顶部:30px;
}

回答你的“或更好的部分”

如果不转换为json数组并运行JavaScript匹配,只需按要求使用JavaScript就可以很容易地做到这一点

附加了一个示例片段。下面的示例检查输入中键入的值是否与任何选项匹配

它是这样做的,在每次输入时,它都会检查数据列表中是否有与用户输入的输入匹配的选项。您可以更改过滤器函数的
return
部分以进行任何类型的匹配

$(“#城市”).on('keyup',函数(e){
var option=$('#cities option')。过滤器(函数(){
返回this.value==$(“#城市”).val();
}).val();
if(option)$(“#output”).html(“找到匹配项:”+option)
else$(“#输出”).html(“”);
});
#输出{
边缘顶部:30px;
}