zoukankan      html  css  js  c++  java
  • 一个动态检索信息的下拉提示框

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <META content="fason,阿信" name=Author>
    <title>动态提示的下拉框</title>
    <style>
    a
    {color:red;text-decoration:none;font-size:12px}
    </style>
    </head>
    <body onload="Init()">
    <center>
    <h2>动态提示的下拉框</h2>
    <hr>
    <form name=frm>
    <table>
      
    <tr>
        
    <td>请输入1或2或3或4或5进行测试:<br><input name="txt" style="100px" onkeyup="SelectTip(0)"> <input type="button" value="reset" onclick="SelectTip(1)"></td>
      
    </tr>
      
    <tr>
        
    <td>
        
    <span id="demo"><select name="demo" style="100px" size=10 onchange="txt.value=options[selectedIndex].text;">
        
    <option value="1">1</option>
        
    <option value="12">12</option>
        
    <option value="123">123</option>
        
    <option value="1234">1234</option>
        
    <option value="2">2</option>
        
    <option value="23">23</option>
        
    <option value="234">234</option>
        
    <option value="2345">2345</option>
        
    <option value="3">3</option>
        
    <option value="34">34</option>
        
    <option value="345">345</option>
        
    <option value="3456">3456</option>
        
    <option value="5">5</option>
        
    <option value="51">51</option>
        
    <option value="51w">51w</option>
        
    <option value="51wi">51wi</option>
        
    <option value="51win">51win</option>
        
    <option value="51windows">51windows</option>
        
    </select></span>
        
    </td>
      
    </tr>
     
    </form>
    </table>
    <hr>
    <script language="javascript">
    var TempArr=[];//存贮option

    function Init(){
    var SelectObj=document.frm.elements["demo"
    ]
    /*先将数据存入数组*/

    with(SelectObj)
        
    for(i=0;i<length;i++)TempArr[i]=
    [options[i].text,options[i].value]
    }


    function SelectTip(flag){
    var TxtObj=document.frm.elements["txt"
    ]
    var SelectObj=document.getElementById("demo"
    )
    var Arr=
    []
    with(SelectObj)
    {
        
    var SelectHTML=innerHTML.match(/<[^>]*>/)[0
    ]
        
    for(i=0;i<TempArr.length;i++
    )
        
    if(TempArr[i][0].indexOf(TxtObj.value)==0||flag)//若找到以txt的内容开头的,添option。若flag为true,对下拉框初始化

        Arr[Arr.length]="<option value='"+TempArr[i][1]+"'>"+TempArr[i][0]+"</option>"
        innerHTML
    =SelectHTML+Arr.join()+"</SELECT>"
    }

    }

    </script>
    </body>



    <script language="javascript">
    var intIndex=0;arrList = new Array();
    arrList[intIndex
    ++= "1sdfsdf.com"
    ;
    arrList[intIndex
    ++= "a11sdafs.net"
    ;
    arrList[intIndex
    ++= "b22dsafsdf"
    ;
    arrList[intIndex
    ++= "c333asdfsadf"
    ;
    arrList[intIndex
    ++= "4444dsafasdf"
    ;
    arrList[intIndex
    ++= "dddsfddsafdsaf"
    ;
    arrList[intIndex
    ++= "121213dsafsdaf"
    ;
    arrList[intIndex
    ++= "43213asdfadsf"
    ;
    arrList[intIndex
    ++= "dsa3121dasf3"
    ;
    arrList[intIndex
    ++= "a213"
    ;
    arrList[intIndex
    ++= "323313"
    ;
    arrList[intIndex
    ++= "3213"
    ;
    arrList[intIndex
    ++= "32213"
    ;
    arrList[intIndex
    ++= "dsfsdddd"
    ;
    arrList[intIndex
    ++= "ds11dfsfd"
    ;
    arrList[intIndex
    ++= "ffdafd"
    ;
    arrList[intIndex
    ++= "afdfd"
    ;
    arrList[intIndex
    ++= "afd"
    ;
    arrList[intIndex
    ++= "baffad"
    ;
    arrList[intIndex
    ++= "2fda2fd"
    ;
    arrList[intIndex
    ++= "dasd"
    ;

    function smanPromptList(arrList,objInputId)
    {
        
    this.style = "background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;"

        
    if (arrList.constructor!=Array){alert('smanPromptList初始化失败:第一个参数非数组!');return ;}
        window.onload 
    =function() {
                                     arrList.sort(
    function(a,b)
    {
                                              
    if(a.length>b.length)return 1
    ;
                                             
    else if(a.length==b.length)return
     a.localeCompare(b);
                                             
    else return -1
    ;
                                    }
    )
            
    var objouter=document.getElementById("__smanDisp"//显示的DIV对象

            var objInput = document.getElementById(objInputId); //文本框对象
            var selectedIndex=-1;
            
    var intTmp; //循环用的:)

            if (objInput==null{alert('smanPromptList初始化失败:没有找到"'+objInputId+'"文本框');return ;}
                
    //文本框失去焦点
                objInput.onblur=function(){
                    objouter.style.display
    =
    'none';
                }

                
    //文本框按键抬起
                objInput.onkeyup=checkKeyCode;
                
    //文本框得到焦点

                objInput.onfocus=checkAndShow;
                
    function checkKeyCode()
    {
                    
    var ie = (document.all)? true:false

                    
    if (ie){
                        
    var keyCode=
    event.keyCode
                        
    if (keyCode==40||keyCode==38)
    //下上
                            var isUp=false
                            
    if(keyCode==40) isUp=true ;
                            chageSelection(isUp)
                        }
    else if (keyCode==13){//回车
                            outSelection(selectedIndex);
                        }
    else{
                            checkAndShow()
                        }

                    }
    else{
                        checkAndShow()
                    }

                    divPosition()
                }


                
    function checkAndShow(){
                            
    var strInput =
     objInput.value
                            
    if (strInput!="")
    {
                                divPosition();
                                selectedIndex
    =-1
    ;
                                objouter.innerHTML 
    =""
    ;
                                
    for (intTmp=0;intTmp<arrList.length;intTmp++)
    {
                                    
    if (arrList[intTmp].substr(0, strInput.length).toUpperCase()==strInput.toUpperCase())
    {
                                        addOption(arrList[intTmp]);
                                    }

                                }

                                objouter.style.display
    ='';
                            }
    else{
                                objouter.style.display
    =
    'none';
                        }

                        
    function addOption(value){
                            objouter.innerHTML 
    +="<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('"+objInputId+"').value='" + value + "'\">" + value + "</div>"
        
                        }

                }

                
    function chageSelection(isUp){
                    
    if (objouter.style.display=='none')
    {
                        objouter.style.display
    =
    '';
                    }
    else{
                        
    if
     (isUp)
                            selectedIndex
    ++

                        
    else
                            selectedIndex
    --
                    }

                    
    var maxIndex = objouter.children.length-1;
                    
    if (selectedIndex<0){selectedIndex=0}

                    
    if (selectedIndex>maxIndex) {selectedIndex=maxIndex}
                    
    for (intTmp=0;intTmp<=maxIndex;intTmp++){

                        
    if (intTmp==selectedIndex)
    {
                            objouter.children[intTmp].className
    ="sman_selectedStyle"
    ;
                        }
    else{
                            objouter.children[intTmp].className
    =""
    ;
                        }

                    }

                }

                
    function outSelection(Index){
                    objInput.value 
    =
     objouter.children[Index].innerText;
                    objouter.style.display
    =
    'none';
                }

                
    function divPosition(){
                    objouter.style.top    
    =getAbsoluteHeight(objInput)+
    getAbsoluteTop(objInput);
                    objouter.style.left    
    =
    getAbsoluteLeft(objInput); 
                    objouter.style.width
    =
    getAbsoluteWidth(objInput)
                }

        }

        document.write(
    "<div id='__smanDisp' style='position:absolute;display:none;" + this.style + "' onbulr> </div>");
        document.write(
    "<style>.sman_selectedStyle{background-Color:#102681;color:#FFFFFF}</style>"
    );
        
    function getAbsoluteHeight(ob)
    {
            
    return
     ob.offsetHeight
        }

        
    function getAbsoluteWidth(ob){
            
    return
     ob.offsetWidth
        }

        
    function getAbsoluteLeft(ob){
            
    var mendingLeft =
     ob .offsetLeft;
            
    while( ob != null && ob.offsetParent != null && ob.offsetParent.tagName != "BODY" )
    {
                mendingLeft 
    +=
     ob .offsetParent.offsetLeft;
                mendingOb 
    =
     ob.offsetParent;
            }

            
    return mendingLeft ;
        }

        
    function getAbsoluteTop(ob){
            
    var mendingTop =
     ob.offsetTop;
            
    while( ob != null && ob.offsetParent != null && ob.offsetParent.tagName != "BODY" )
    {
                mendingTop 
    +=
     ob .offsetParent.offsetTop;
                ob 
    =
     ob .offsetParent;
            }

            
    return mendingTop ;
        }

    }

    smanPromptList(arrList,
    "inputer")
    </script>


    <input type="text" id="inputer">
  • 相关阅读:
    商品尺码规格和颜色需要支持双引号
    php xss 函数
    yar 调用rpc方法
    【转】Linux常用命令大全
    【Netty】最透彻的Netty原理架构解析
    【Git项目管理】分布式 Git
    【SpringBoot】几种定时任务的实现方式
    【Elasticsearch-Java】Java客户端搭建
    【Git项目管理】Git分支
    【Git项目管理】git新手入门——基础教程
  • 原文地址:https://www.cnblogs.com/ymyglhb/p/1265161.html
Copyright © 2011-2022 走看看