select搜索功能实现

1 篇文章 0 订阅

select搜索功能实现

最近在找工作 没时间写博客 现在找到了 就发发工作上的代码吧!
今天我们说说select标签的搜索功能;
拿到任务时,我先想到就是上网找资料,最后看到的都是各种jquery插件,实在是不好用 我现在又不是开发新的项目,没法乱用插件。最后只能自己想:ps(纯js实现)

1.实现可编辑select,我的实现方式就是在原有的select内容显示框中假如input输入框。掩盖一下;最后做值传递;
2.对input的内容进行循环判断,做到搜索功能。
3.对搜索出来的值,进行处理;
4.放到select中去;

这是效果图  应为没怎么修饰,大家凑合看

下面上代码:

<select  id="telUserName"  onchange="putValueToInput()">
            <option value="">--请选择--</option>
            <option value="yua">上海</option>
            <option value="yuangui">天津</option>
            <option value="fang">安徽</option>
            <option value="zhang">江苏</option>
            <option value="zhang">湖南</option>
            <option value="zhang">湖北</option>
        </select>
        <input  type="text" name="input"  placeholder="-请选择-" id="input" onblur="inputValue()" 
                style="width:60px; height: 13px; position: absolute;left: 8px;top: 8px; "/>
        <div style="width:80px;border:1px solid #ccc;display:none; " id="DIV">
        </div>

这是页面标签,下面来js:

<script type="text/javascript">
        function putValueToInput(){
            var telUserName= document.getElementById("telUserName");
            var perpage=telUserName.options[telUserName.selectedIndex].text;
            var input=document.getElementById("input");
            input.value=perpage;
        }

        function inputValue(){
            var input=document.getElementById("input").value;
            var telUserName= document.getElementById("telUserName");
            var options=telUserName.getElementsByTagName("option");
            var div=document.getElementById("DIV");
            div.innerHTML="";
            var a = 0;
            for(var i=options.length-1;i>=1;i--){
                var optionText=options[i].text;
                if(optionText.indexOf(input) >= 0){
                    div.style.display='block';
                    div.innerHTML+="<span style='font-size: 12px;' onclick='getVlaue(this)'>"+optionText+"</span><br/>";
                    a++;
                }
            }
            if(a==0){
                div.style.display='none';
            }
        }

        function getVlaue(obj){
            var telUserName= document.getElementById("telUserName");
            var options=telUserName.getElementsByTagName("option");
            var div=document.getElementById("DIV");
            for(var i=options.length-1;i>=1;i--){
                var optionText=options[i].text;
                var optionValue=options[i].value;
                if(obj.innerHTML==optionText){
                    telUserName.value=optionValue;
                    document.getElementById("input").value=optionText;
                    div.style.display='none';
                    div.innerHTML="";
                }
        }   
    }

</script>

简要解释一下这三段js的作用
1、putValueToInput()是实现select选中值回现到input中,应为我们这里的input就是对select标签内容的代替;
2、inputValue()这是在input输入内容时,将input的value取出和select的options的值作对比;实现搜素功能;
3、getVlaue将选中的值传给select和input;

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值