Select 输入更改时的数据列表值并使用 jQuery javascript 填充表单

Select datalist value on input change and populate the form using jQuery javascript

我正在尝试进行自动完成,当输入更改并从数据列表中选择一个选项时,我希望表单和文本字段填充数据列表中选定的 value/text。 我在 stackexchange 上尝试了类似问题的许多选项,但无法使其工作。

求助!

$(document).ready(function() {
  $('#UserCity').on('input', function() {
    var str = "";
    console.log($(this).val());
    $("#UserCitySelect").on('select', function() {
      str += $(this).text() + " ";
    });
    str = $("#UserCitySelect option:selected").text()
    console.log(str);
    document.getElementById("selected").text = str;
    document.getElementById("selecteddiv").innerHTML = str;
    console.log($(this).val());
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="UserCity" id="UserCity" label="User City" max_length="25" list="UserCitySelect" required="">

<p id="selected"><p>
<div id="selecteddiv"><div>

<datalist id="UserCitySelect">
    <option value="Los Angeles">Los Angeles</option>
    <option value="New York">New York</option>
    <option value="Chicago">Chicago</option>
</datalist>

:selected 不适用于 datalist 选项,因为一个数据列表可以为多个输入提供建议。如果两个不同的输入包含列表中的两个不同建议,将选择哪个?

您可以使用输入文本事件检查输入值的变化,并使用 id 分配 div 中的值。

$(document).ready(function() {
  $("input[name='UserCity']").on('input', function(e){
     var selectedVal = $(this).val();
     document.getElementById("selected").innerHTML = selectedVal ;
     document.getElementById("selecteddiv").innerHTML = selectedVal ;
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="UserCity" id="UserCity" label="User City" max_length="25" list="UserCitySelect" required="">
<datalist id="UserCitySelect">
    <option value="Los Angeles">Los Angeles</option>
    <option value="New York">New York</option>
    <option value="Chicago">Chicago</option>
</datalist>
<p id="selected"></p>
<div id="selecteddiv"><div>