最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實現(xiàn)的一個簡單的Autocomplete自動完成例子

 更新時間:2014年04月16日 09:16:20   作者:  
這篇文章主要介紹了JS實現(xiàn)的一個簡單的Autocomplete自動完成例子,需要的朋友可以參考下

分享一篇無意間發(fā)現(xiàn)的自動完成源碼。這里測試的時候使用的是數(shù)組,實際使用的時候,我們換成Ajax從服務(wù)器端獲取的方式就OK了。

提示:可以直接保存到一個html文件中查看效果。

復(fù)制代碼 代碼如下:

<!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; /* 設(shè)置對象的層疊順序 */
    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的根節(jié)點
    this.value_arr=arr;        //不要包含重復(fù)值
    this.index=-1;          //當(dāng)前選中的DIV的索引
    this.search_value="";   //保存當(dāng)前搜索的字符
}
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";
    },
    //設(shè)置值
    setValue: function(_this){
        return function(){
            _this.obj.value=this.seq;
            _this.autoObj.className="auto_hidden";
        }     
    },
    //模擬鼠標(biāo)移動至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;
            }
        }
    }
    ,
    //響應(yīng)鍵盤
    pressKey: function(event){
        var length = this.autoObj.children.length;
        //光標(biāo)鍵"↓"
        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);
        }
        //光標(biāo)鍵"↑"
        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;//記錄創(chuàng)建的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">自動完成函數(shù)(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>

相關(guān)文章

  • syntaxhighlighter 使用方法

    syntaxhighlighter 使用方法

    syntaxhighlighter 使用方法...
    2007-07-07
  • 使用webpack搭建pixi.js開發(fā)環(huán)境

    使用webpack搭建pixi.js開發(fā)環(huán)境

    這篇文章主要介紹了使用webpack搭建pixi.js開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Three.js?PBR物理渲染屬性及使用介紹

    Three.js?PBR物理渲染屬性及使用介紹

    這篇文章主要為大家介紹了Three.js?PBR物理渲染屬性及使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • JavaScript實現(xiàn)簡單評論功能

    JavaScript實現(xiàn)簡單評論功能

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)簡單評論功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • uniapp video播放視頻 懸浮在屏幕無法滑動

    uniapp video播放視頻 懸浮在屏幕無法滑動

    在uniapp中,需要使用<video></video>標(biāo)簽進行播放動態(tài)src的視頻,這里只是簡單的在App端播放視頻,且動態(tài)賦值src,如果還有其它復(fù)雜的布局內(nèi)部嵌套video標(biāo)簽也是不成功的,例如:<swiper>、<scroll-view>等,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 理解 JavaScript EventEmitter

    理解 JavaScript EventEmitter

    本文是筆者看了eventemitter3 和 Node.js 事件模塊源碼后實現(xiàn)的 EventEmitter 。JavaScript 事件很重要,希望看了這篇文章的你們能有所收獲
    2018-03-03
  • AJAX跨域請求json數(shù)據(jù)的實現(xiàn)方法

    AJAX跨域請求json數(shù)據(jù)的實現(xiàn)方法

    這篇文章介紹了AJAX跨域請求json數(shù)據(jù)的實現(xiàn)方法,有需要的朋友可以參考一下
    2013-11-11
  • js實現(xiàn)統(tǒng)計字符串中特定字符出現(xiàn)個數(shù)的方法

    js實現(xiàn)統(tǒng)計字符串中特定字符出現(xiàn)個數(shù)的方法

    這篇文章主要介紹了js實現(xiàn)統(tǒng)計字符串中特定字符出現(xiàn)個數(shù)的方法,涉及javascript針對字符串中字符運算操作相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • JS關(guān)閉窗口時產(chǎn)生的事件及用法示例

    JS關(guān)閉窗口時產(chǎn)生的事件及用法示例

    這篇文章主要介紹了JS關(guān)閉窗口時產(chǎn)生的事件及用法,結(jié)合關(guān)閉窗口時提交評論的實例分析了javascript事件觸發(fā)機制及遮罩層實現(xiàn)技巧,需要的朋友可以參考下
    2016-08-08
  • JavaScript基于inquirer封裝一個控制臺文件選擇器

    JavaScript基于inquirer封裝一個控制臺文件選擇器

    這篇文章主要介紹了JavaScript基于inquirer封裝一個控制臺文件選擇器,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08

最新評論

房山区| 和田县| 贞丰县| 石屏县| 临颍县| 富源县| 资讯 | 聂荣县| 县级市| 泗水县| 丘北县| 苍梧县| 连城县| 长兴县| 新丰县| 晋江市| 临漳县| 龙门县| 科技| 绥德县| 三原县| 云南省| 潮安县| 新田县| 大石桥市| 绥阳县| 区。| 浮梁县| 诏安县| 宜宾市| 凉城县| 温泉县| 天祝| 扶沟县| 西贡区| 金门县| 宾川县| 小金县| 永城市| 湘阴县| 鄂托克前旗|