博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单实现input输入框的下拉显示
阅读量:4919 次
发布时间:2019-06-11

本文共 4722 字,大约阅读时间需要 15 分钟。

window.inputSelect = new function(){        var self = this;        var config = {            class: "inputSelect" ,  //制定好响应的input具备的class            attr : "dataName",      //设定好关联的数据类别            data: {          //test数据类别                test : [                    { value: "text1", text : "text1" , keyword: "ssssss" },                    { value: "text2", text : "text2" , keyword: "ass" },                    { value: "text3", text : "text3" , keyword: "fswqe" },                    { value: "text4", text : "text4" , keyword: "gjqrnnczv" },                    { value: "text5", text : "text5" , keyword: "sajdhqwudh" }]            }        }        this.setData = function(name,data,bool){            if( bool && config.data[name] ){                config.data[name].concat(data);                return            }            config.data[name] = data;        };        this.getData = function(name){            return config.data[name];        };        this.bind = function(input){            var a = document.getElementsByTagName("input");            if( input ){                a = [input];            }            var className;            var _class = config.class;            var _this;            var data;            var optionStr = "";            for( var i in a ){                _this = a[0];                if(_this.type = "text"){                    className = _this.className.split(" ");                    for( var _i in className ){                        if(className[_i] === _class ){                            _this.onchange = function(e){                                 if( !this.isChange ) {                                     e.stopPropagation();                                     return;                                 }                                 this.isChange = false;                            }                            _this.oninput = function(){                                var _this = this;                                optionStr = "";                                data = self.getData(this.attributes.getNamedItem(config.attr).value);                                for( var i in data ){                                    var it = data[i];                                    if(it.keyword.indexOf(this.value) > -1 && this.value != "") {                                        optionStr += "
"+ it.text +"
" } } if(!this.optionSelect){ var div = document.createElement("div"); div.style.cssText = "position:absolute;width:"+ this.offsetWidth +"px;left:"+this.offsetLeft+"px;top:"+ (this.offsetTop + this.offsetHeight) +"px;"; div.innerHTML = optionStr div.onclick = function(e){ _this.value = e.target.attributes.getNamedItem("value").value; _this.isChange = true; (jQuery && jQuery(_this).change() ) || (_this.onchange && _this.onchange() ); }; this.optionSelect = div; if(optionStr != "") this.after(div); else div.remove(); }else{ var div = this.optionSelect; div.innerHTML = optionStr; if(optionStr != "") this.after(div); else div.remove(); } if(!this.onblur) { this.onblur = function(){ var div = this.optionSelect; setTimeout(function(){ div.remove(); div = null; this.onblur = null; },100) } } } } } }; } }(); }();
    

  

 

  

简单的一种实现input输入框下拉查询的实现  可以响应一些基本事件  比如说 change 点击option的回调之类的

 

欢迎指点。。。

转载于:https://www.cnblogs.com/liao1992/articles/7651060.html

你可能感兴趣的文章
js对象的浅度拷贝和深度拷贝
查看>>
GL.IssuePluginEvent 发布插件事件
查看>>
【读书】快速阅读术 - 印南敦史
查看>>
MySQL导入SQL文件过大或连接超时的解决办法
查看>>
面试中经常会被问到的70个问题
查看>>
A1016 Phone Bills (25 分)
查看>>
linux sftp安装【转】
查看>>
jQuery $.each用法
查看>>
PyQt5控件概览
查看>>
PyQt5 控件学习(一个一个学习之QKeySequenceEdit)
查看>>
vi编辑器的使用(2)
查看>>
QTP——改变Excel的单元格颜色
查看>>
C# 判断网络文件是否存在
查看>>
CodeForces 449B - Jzzhu and Cities
查看>>
常用sql语句
查看>>
Android学习笔记-保存数据的实现方法2-SharedPreferences
查看>>
python接口自动化1
查看>>
java this关键字
查看>>
JAVA8之数据流Stream
查看>>
关于控制反转(IOC)容器 ,依赖注入(DI)模式必读文章收集
查看>>