我正在使用datalist HTML属性来获取下拉列表输入框:



<input list="orderTypes" value="Book">
<datalist id="orderTypes">
  <option value="Book">
  <option value="Copy">
  <option value="Page">
</datalist>





问题在于,现在我必须清除输入框才能查看所有下拉值。是否可以使用默认值,但是单击下拉图标后仍可以查看数据列表中的所有值?

最佳答案

我不知道如何在本地执行此操作。您可以将“ helper” div用作输入字段具有值时使用。我无法隐藏本地下拉列表,因此我重命名了ID。使用jQuery。

html

<input list="orderTypes" id="dlInput">
<div id="helper" style="display:none;position:absolute;z-index:200;border:1pt solid #ccc;"></div>
<datalist id="orderTypes" style="z-index:100;">
   <option value="Book">
   <option value="Copy">
   <option value="Page">
</datalist>


脚本

$(function(){
    // make a copy of datalist
    var dl="";
    $("#orderTypes option").each(function(){
            dl+="<div class='dlOption'>"+$(this).val()+"</div>";
    });
    $("#helper").html(dl);
    $("#helper").width( $("#dlInput").width() );

    $(document).on("click","#dlInput",function(){
        // display list if it has value
        var lv=$("#dlInput").val();
        if( lv.length ){
                $("#orderTypes").attr("id","orderTypesHide");
                $("#helper").show();
        }
    });

    $(document).on("click",".dlOption",function(){
        $("#dlInput").val( $(this).html() );
        $("#helper").hide();
    });

    $(document).on("change","#dlInput",function(){
        if( $(this).val()==="" ){
            $("#orderTypesHide").attr("id","orderTypes");
            $("#helper").hide();
        }
    });
});


jsFiddle

关于javascript - 如何在输入数据列表中设置默认值并仍然具有下拉菜单?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56977572/

10-16 14:06