jquery模拟可输入的下拉框

Posted liguangsunls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery模拟可输入的下拉框相关的知识,希望对你有一定的参考价值。

//页面html
<div id="select" class="select" >
                              <ul>
                                <c:forEach items="${movieCityList}" var="cy" varStatus="st">
                                    <li>
                                        <a href="javascript:void(0)" onclick="selectOption($(this))">${cy.cityName}</a>
                                        <input style="display: none;" name="cityCode" id="cityCode${st.count }" value="${cy.vasCityId}"/>
                                    </li>
                                </c:forEach>
                              </ul>
                            </div>
//jquery代码
<script type="text/javascript">

            //城市下拉框函数
            function getData(){//获取全部城市数据
                var data=new Array();
                $(".select a").each(function(i){
                    data[i]=$(this).html();
                });
                return data;
            }
            function judgeLength(l){//依据结果显示下拉框高度
                if(l>5){
                    $(".select").css("height","100px");
                }else{
                    $(".select").css("height",l*20+"px");
                }
            }
            function selectOption(obj){//选中
                $("#cityName").val(obj.html());
                $("#cityId").val(obj.next("input").val());
                $(".select").hide();
                loadCinemalName();
            }
            function onFocus(){//input标签获取焦点
                var l=getData().length;
                if($(‘#cityName‘).val()==‘‘){
                    judgeLength(l);
                $(".select").show();
                }else{
                    var obj=$("#cityName");
                    onKeyUp(obj);
                }
            }
            function onKeyUp(obj){//input keyup事件
                var input=obj.val()+‘‘;
                $(".select li").hide();
                var height=0;   
                var data=getData();
                var l=getData().length;
                if(input!=‘‘){//输入时动态检索是否存在所输入的城市
                    for(var i=0;i<data.length;i++){
                        var str=data[i]+"";
                        if(str.indexOf(input)!=-1){
                            height++;
                            judgeLength(height);
                            $(".select").show();
                            $(".select li:eq("+i+")").show();
                            var cityId=$(".select li:eq("+i+") input").val();
                            $("#cityId").val(cityId);
                        }
                    }
                    loadCinemalName();
                }else{
                    judgeLength(l);
                    $(".select li").show();
                }
            }
            function onBlur(e){//失去焦点时隐藏下拉框
                alert(e.target);
                //$(".select").hide();
            }
        </script>

以上是关于jquery模拟可输入的下拉框的主要内容,如果未能解决你的问题,请参考以下文章

jQuery input 下拉框焦点事件

jQuery实现简单的下拉可输入组合框

用jquery设置下拉不可编辑,但是没起作用,求高手指点,急。。。

可输入下拉框,jquery.editable-select

用jquery实现可输入多选下拉组合框

Vue设置输入框、下拉框不可修改