【问题标题】:selecting text and value from dynamic datalist从动态数据列表中选择文本和值
【发布时间】:2019-05-19 21:18:44
【问题描述】:

我正在尝试使用数据列表创建一个自动完成框。这是我所做的和想要的:

  1. 将数据列表与来自服务器的响应(键,值)绑定

  2. 当我绑定我的数据列表时,我会看到键和值,但我只想看到值。问题:如何只显示datalist中的值?

  3. 每当我从这个动态数据列表中选择一个值时,我都想显示所选值及其文本。问题:如何在datalist中显示选中的值及其对应的key?

我的代码:

<input type="text" id="tex_in"  list="dataList" />
                            <datalist id="dataList" >

                                   </datalist>

 if (query.length >= 4)
  {

        $.ajax({
                    type: "POST",
                    url: proxy,
                    data: JSON.stringify({"table" : table, "query" : query}),
                    success: function(){},
                    dataType: "json",
                    contentType : "application/json",
                    success: function (response) {
                                  var data_response = 
                                 JSON.stringify(response)
                                 var data = JSON.parse(data_response);
                                 data.response.docs.forEach(function (el) {

                                    if (autoCan.length < 10)
                                    autoCan.push([el["key"], el["value"]]);

                                     });

                                 //console.log(autoCan);
                                  if (autoCan.length)
                                          {

                                          autoCan.forEach(function (el) {


                                          $('#dataList').append($("<option></option>").val(el[1]).html(el[0])); //



                                           });

// display selected key and value  from this datalist

                                            $("#dataList").click(function (){
                                             console.log($('#dataList option:selected').text());
                                            console.log($('#dataList').attr('value'));


                                            });




                                          }

                                 else {

                                        $('#dataList').modal('hide');
                                      }





                         },
                            error: function() {
                                 console.log("error at server");


                            }



                    });




   }

  else
  {
    $('#dataList').modal('hide');

    }

【问题讨论】:

  • 请创建一个静态可运行示例,减少到重现您的问题所需的最少代码。

标签: javascript jquery html html-datalist


【解决方案1】:

starks = [{id: 1, name: 'Bran'}, {id: 2, name: 'Sansa'}, {id: 3, name: 'Arya'}]

starks.forEach(function(stark) {
  $('#selection').append('<option data-value="'+ stark.id+'" value="' + stark.name + '">' + stark.name + '</option>')
})



 $("#input").on('input', function (){
   var selectedValue = $(this).val();
   $('#value').text('Value: '+$('#selection [value="' + selectedValue + '"]').data('value'));
   $('#browser [value="' + selectedValue + '"]').data('value')
   $('#text').text('Text: '+selectedValue)
 });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="input" type="text" list="selection"/>

<datalist id="selection">
</datalist>

<br/><br/>

<span id="value"></span><br/>
<span id="text"></span>

【讨论】:

  • 如果我做对了,你正在使用选择,但要使用自动完成框(dataList)。即使我没有在文本框中输入,也会在 ui 上显示一个选择标签。
  • 我刚刚编辑了代码,我已将密钥设置为数据属性,因此它不会在数据列表中显示您的密钥。当用户选择一个选项时,我们知道根据用户选择的值从数据属性中检索正确的键。
猜你喜欢
  • 1970-01-01
  • 2012-07-26
  • 2021-09-28
  • 2014-04-28
  • 1970-01-01
  • 2014-02-10
  • 2015-03-18
  • 1970-01-01
  • 2023-02-01
相关资源
最近更新 更多