我想实现以上功能,当输入每个字的时候都会出现以输入的字开头的记录,这种操作应该用文本框的哪个动作是“onKeyUp”,"onKeyDown","onChange"...
还有就是我根据这个名字去查数据库的时候是不是该写个存储过程来查,有没有那个必要?再者带like的存储过程该怎么写,举个例子!急,谢谢!

解决方案 »

  1.   

    这是一个类似的功能,以前用过的,lz看有没有帮助
    <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="width:100px" onkeyup="SelectTip(0)"> <input type="button" value="reset" onclick="SelectTip(1)"></td>
      </tr>
      <tr>
        <td>
        <span id="demo"><select name="demo" style="width: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=[];//存贮optionfunction 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>
      

  2.   

    用onKeyUp事件,要是数据是从数据库查询上来的话,那就用ajax来做
    想要查询以XXX开头的就用XXX%来查询
      

  3.   

    我现在用的确实是“onKeyUp”事件,也是用的***%查的,但是查的时候有点慢,而且经常会有内存溢出的现象,这是怎么回事啊??
      

  4.   

    这个是自动完成功能,要实现一个比较完善的、跨浏览器的还是需要一定
    技巧的。比如输入多少字开始到数据库中去查?如果输入者的输入速度很
    快这里该怎么处理?如何跨浏览器的使用文本 Rang 等等。我们做东西并不是只要看到代码就行了,最好能深入理解一下其中的原理,
    哪怕不会写代码也是不要紧的。楼主可以去看看这本书,里面有详细的介绍。