`

输入框自动填充效果 js

 
阅读更多

    <!doctype html>
    <html>
    <style>
    body {
        margin-left: 0px;
        margin-top: 0px;
        margin-right: 0px;
        margin-bottom: 0px;
    }
    .auto_hidden {
        width:204px;border-top: 1px solid #333;
        border-bottom: 1px solid #333;
        border-left: 1px solid #333;
        border-right: 1px solid #333;
        position:absolute;
        display:none;
    }
    .auto_show {
        width:204px;
        border-top: 1px solid #333;
        border-bottom: 1px solid #333;
        border-left: 1px solid #333;
        border-right: 1px solid #333;
        position:absolute;
        z-index:9999; /* 设置对象的层叠顺序 */
        display:block;
    }
    .auto_onmouseover{
        color:#ffffff;
        background-color:highlight;
        width:100%;
    }
    .auto_onmouseout{
        color:#000000;
        width:100%;
        background-color:#ffffff;
    }
    </style>
    <script language="javascript">
    var $ = function (id) {
        return "string" == typeof id ? document.getElementById(id) : id;
    }
    var Bind = function(object, fun) {
        return function() {
            return fun.apply(object, arguments);
        }
    }
    function AutoComplete(obj,autoObj,arr){
        this.obj=$(obj);        //输入框
        this.autoObj=$(autoObj);//DIV的根节点
        this.value_arr=arr;        //不要包含重复值
        this.index=-1;          //当前选中的DIV的索引
        this.search_value="";   //保存当前搜索的字符
    }
    AutoComplete.prototype={
        //初始化DIV的位置
        init: function(){
            this.autoObj.style.left = this.obj.offsetLeft + "px";
            this.autoObj.style.top  = this.obj.offsetTop + this.obj.offsetHeight + "px";
            this.autoObj.style.width= this.obj.offsetWidth - 2 + "px";//减去边框的长度2px  
        },
        //删除自动完成需要的所有DIV
        deleteDIV: function(){
            while(this.autoObj.hasChildNodes()){
                this.autoObj.removeChild(this.autoObj.firstChild);
            }
            this.autoObj.className="auto_hidden";
        },
        //设置值
        setValue: function(_this){
            return function(){
                _this.obj.value=this.seq;
                _this.autoObj.className="auto_hidden";
            }      
        },
        //模拟鼠标移动至DIV时,DIV高亮
        autoOnmouseover: function(_this,_div_index){
            return function(){
                _this.index=_div_index;
                var length = _this.autoObj.children.length;
                for(var j=0;j<length;j++){
                    if(j!=_this.index ){      
                        _this.autoObj.childNodes[j].className='auto_onmouseout';
                    }else{
                        _this.autoObj.childNodes[j].className='auto_onmouseover';
                    }
                }
            }
        },
        //更改classname
        changeClassname: function(length){
            for(var i=0;i<length;i++){
                if(i!=this.index ){      
                    this.autoObj.childNodes[i].className='auto_onmouseout';
                }else{
                    this.autoObj.childNodes[i].className='auto_onmouseover';
                    this.obj.value=this.autoObj.childNodes[i].seq;
                }
            }
        }
        ,
        //响应键盘
        pressKey: function(event){
            var length = this.autoObj.children.length;
            //光标键"↓"
            if(event.keyCode==40){
                ++this.index;
                if(this.index>length){
                    this.index=0;
                }else if(this.index==length){
                    this.obj.value=this.search_value;
                }
                this.changeClassname(length);
            }
            //光标键"↑"
            else if(event.keyCode==38){
                this.index--;
                if(this.index<-1){
                    this.index=length - 1;
                }else if(this.index==-1){
                    this.obj.value=this.search_value;
                }
                this.changeClassname(length);
            }
            //回车键
            else if(event.keyCode==13){
                this.autoObj.className="auto_hidden";
                this.index=-1;
            }else{
                this.index=-1;
            }
        },
        //程序入口
        start: function(event){
            if(event.keyCode!=13&&event.keyCode!=38&&event.keyCode!=40){
                this.init();
                this.deleteDIV();
                this.search_value=this.obj.value;
                var valueArr=this.value_arr;
                valueArr.sort();
                if(this.obj.value.replace(/(^\s*)|(\s*$)/g,'')==""){ return; }//值为空,退出
                try{ var reg = new RegExp("(" + this.obj.value + ")","i");}
                catch (e){ return; }
                var div_index=0;//记录创建的DIV的索引
                for(var i=0;i<valueArr.length;i++){
                    if(reg.test(valueArr[i])){
                        var div = document.createElement("div");
                        div.className="auto_onmouseout";
                        div.seq=valueArr[i];
                        div.onclick=this.setValue(this);
                        div.onmouseover=this.autoOnmouseover(this,div_index);
                        div.innerHTML=valueArr[i].replace(reg,"<strong>$1</strong>");//搜索到的字符粗体显示
                        this.autoObj.appendChild(div);
                        this.autoObj.className="auto_show";
                        div_index++;
                    }
                }
            }
            this.pressKey(event);
            window.onresize=Bind(this,function(){this.init();});
        }
    }
    //-->
    </SCRIPT>
    <body>
    <h1 align="center">自动完成函数(Autocomplete Function)</h1>
        <div align="center"><input type="text" style="width:300px;height:20px;font-size:14pt;" id="o" onkeyup="autoComplete.start(event)"></div>
        <div class="auto_hidden" id="auto"><!--自动完成 DIV--></div>
    <script>
        var autoComplete=new AutoComplete('o','auto',['b0','b12','b22','b3','b4','b5','b6','b7','b8','b2','abd','ab','acd','accd','b1','cd','ccd','cbcv','cxf']);
    </SCRIPT>
    </body>
    </html>

分享到:
评论

相关推荐

    jquery输入框动态填充

    在网页中,动态填充指的是根据用户的行为或特定条件,自动在输入框中填充或更新信息的功能。这通常用于搜索框的自动补全、表单的预填充等场景。jQuery提供了强大的选择器、事件监听和DOM操作功能,使得实现这一功能...

    清除input自动填充

    清除input在浏览器中自动填充用户名等的情况,JQuery解决,IE8 ,chrome等均可以使用。

    自动填充的js控件,一个好用的自动填充的js控件,非常适合酒店系统开发的运用!

    在酒店系统开发中,一个高效、好用的自动填充JS控件能够极大地提升用户体验,简化用户的输入操作,提高数据录入的准确性和效率。下面将详细介绍这种控件的工作原理、应用价值以及如何在实际项目中实施。 首先,自动...

    C#dataGridView中输入框自动提示、自动完成、自动补全功能

    自动完成(AutoComplete)则是当用户输入一部分文本后,系统自动填充剩余的部分,以完成完整的条目。这可以使用.NET Framework提供的`AutoCompleteStringCollection`类和`AutoCompleteMode`属性来实现。首先,你需要...

    使用Jquery定时实现显示隐藏,并且自动填充,,单选判断显示隐藏文本框,小功能

    这通常用于表单字段,可以设置一个定时器来自动填充输入框的值。假设我们有一个id为`autoFillInput`的输入框,我们可以这样做: ```javascript $(document).ready(function() { var valueToFill = '自动填充的内容...

    输入框 自动完成 AJAX

    标题中的“输入框自动完成AJAX”是一种常见的前端开发技术,用于提高用户在网页上的输入效率。自动完成功能,也称为自动填充或建议输入,它根据用户在输入框中键入的内容,动态地提供可能的匹配选项。这种功能在搜索...

    jQuery实现输入框自动补全邮箱提示

    本文将详细讲解如何利用jQuery实现输入框自动补全邮箱提示。 首先,我们需要理解jQuery的基本用法。jQuery是一个JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。在jQuery中,我们通常通过...

    仿google输入框自动完成输入源码

    "仿google输入框自动完成输入源码,js实现,方便使用" 描述进一步强调了这个功能是用JavaScript语言实现的,并且设计得易于使用。这意味着开发者可以轻松地将这个代码集成到他们的网站中,为自己的搜索框添加自动...

    避免自动填充表单_html5_javascript_

    4. 为了进一步防止自动填充,可以使用CSS隐藏真实的输入框,并创建覆盖在上面的假输入框,真输入框通过JavaScript处理。这样,即使浏览器填充了表单,用户看到的仍然是空白的输入框。 在实现自动登录功能时,通常...

    仿百度输入框自动匹配功能的JS代码_源码爱好者

    5. **处理用户选择**:当用户点击匹配项时,可以将其自动填充到输入框,并隐藏下拉列表: ```javascript suggestionList.addEventListener('click', (event) =&gt; { if (event.target.tagName.toLowerCase() === '...

    日本都道府县填充,邮编自动填充基于jquery.zip2addr.js实现

    这个项目就是针对这种情况提供的一种解决方案,它利用jQuery库和相关的JavaScript插件来实现自动填充功能。这里我们将详细探讨“日本都道府县填充,邮编自动填充基于jquery.zip2addr.js实现”这一主题。 首先,`...

    jquery-autocomplete 自动填充插件参数使用说明

    本文将深入探讨该插件的参数使用,以便开发者能够灵活定制自己的自动填充效果。 首先,我们需要引入jQuery库和jQuery UI库,这两个库是使用Autocomplete插件的基础。在HTML文件中,确保引入了以下两个链接: ```...

    Js日期选择自动填充到输入框(界面漂亮兼容火狐)

    很漂亮、兼容火狐的Js日期选择,自动填充到输入框&lt;/title&gt; &lt;meta http-equiv=”content-Type” content=”text/html;charset=gb2312″&gt; &lt;style type=”text/css”&gt; body{font-size:12px;font-...

    自动获取短信验证码并填充

    在IT行业中,自动获取短信验证码并填充是一项常见的自动化任务,特别是在移动应用或网站的身份验证环节。这个过程涉及到了几个关键的技术点,包括短信监听、数据解析以及自动化控制。以下是对这些知识点的详细解释:...

    COOKIE自动填充注销的实现

    3. **自动填充**:在事件处理函数中,使用JavaScript读取Cookie,然后将Cookie值填充到对应的输入框。例如: ```javascript document.getElementById('username').addEventListener('focus', function() { var ...

    自动填充功能实现-- 实例源码

    标题中的“自动填充功能实现”通常指的是在软件开发中,特别是在Web应用或移动应用中,为用户输入框设计的一种便捷功能。它能够根据用户输入的字符,动态地提供可能的匹配选项,帮助用户快速完成输入,提高用户体验...

    layui自动填充插件autocomplete.rar

    在layui中,"autocomplete"是一款自动填充插件,常用于输入框,提供智能提示功能,提高用户输入效率。这款插件适用于各种需要自动补全场景,如搜索框、表单填写等。 在layui的autocomplete插件中,主要涉及以下知识...

    JavaWeb ajax异步自动填充信息

    本示例“JavaWeb ajax异步自动填充信息”是一个典型的Ajax应用,模拟了搜索引擎如百度在用户输入时自动填充建议的功能。 首先,我们需要理解Ajax的工作原理。Ajax的核心是XMLHttpRequest对象,它允许JavaScript在...

    登录不弹框提示保存密码.不自动填充.文本框不拉选择

    此外,还可以通过JavaScript监听`input`事件,清除自动填充的内容: ```javascript document.getElementById('username').addEventListener('input', function(e) { if (this.value === '') { this.value = ''; ...

    Qt QWebview调用JS,实现QQ邮箱自动填写输入框,模拟鼠标点击网页按钮!!

    为了更好地理解这个过程,你可以创建一个简单的Qt项目,导入QWebView,加载QQ邮箱登录页面,然后在程序中注入上述代码以自动填充邮箱地址并模拟点击登录按钮。别忘了处理可能出现的错误,例如元素不存在或...

Global site tag (gtag.js) - Google Analytics