<select >
<option>111</option>
<option>1121</option>
<option>1131</option>
<option>2131</option>
</select>
在select focus后key进1
选中的是第一个1打头的选项
再key
选中的是下一个1打头的选项
再key
选中的是再下一个1打头的选项浏览器是这么做的,还算是比较体贴
不见得比楼主的想法差啊---个人之见

解决方案 »

  1.   

    <html>
    <head>
    <script language="javascript">
    function show(value) {
      var obj = new Array()
      var x = 0
      for(i=0;i<slt.options.length;i++) {
        if(slt.options[i].text.substr(0,value.length)==value) {
          obj[x] = slt.removeChild(slt.options[i]);
          x++
        }
      } for (i=0;i<obj.length;i++)
    {
    for (j = 0; j < obj.length - 1 - i; j++){
    temp1 = obj[j].text*1
    temp2 = obj[j+1].text*1
    if (temp1 < temp2) {
              t = obj[j];
              obj[j] = obj[j + 1];
              obj[j+1] = t;
          }
    }
    }  for (a in obj)
        slt.insertBefore(obj[a],slt.children[0])
        
      slt.options[0].selected = true
    }
    </script>
    </head>
    <body>
    <select id="slt">
    <option>1110</option>
    <option>1121</option>
    <option>1131</option>
    <option>2131</option>
    </select>
    <input type="text" onKeyUp="show(this.value)"/>
    </body>
    </html>
      

  2.   

    again
    -----------------
    <html>
    <head>
    <script language="javascript">
    function show(value) {
      var obj = new Array()
      var x = 0
      if (value.replace(/\s+/,"")!="")
      {
        for(i=0;i<slt.options.length;i++) {
          if(slt.options[i].text.substr(0,value.length)==value) {
           obj[x] = slt.options[i];
           x++
          }
        }
        for(a in obj)
          slt.removeChild(obj[a])
      
        for (i=0;i<obj.length;i++)
        {
          for (j = 0; j < obj.length - 1 - i; j++){
            temp1 = obj[j].text*1
            temp2 = obj[j+1].text*1
            if (temp1 < temp2) {
              t = obj[j];
              obj[j] = obj[j + 1];
              obj[j+1] = t;
            }
          }
        }
      
        for (a in obj)
          slt.insertBefore(obj[a],slt.children[0])
          
        slt.options[0].selected = true
      }
    }
    </script>
    </head>
    <body>
    <select id="slt">
    <option>1110</option>
    <option>1121</option>
    <option>1131</option>
    <option>2131</option>
    </select>
    <input type="text" onKeyUp="show(this.value)"/>
    </body>
    </html>
      

  3.   

    <html>
    <head>
    <script language="javascript">
    function show(value) {
    for(i=0;i<slt.options.length;i++) {
      var stext=slt.options[i].text;
      if(stext.indexOf(value)==0) {
            slt.options[i]=null;      
    slt.add(new Option(stext),0);
    slt.selectedIndex=0;
    break;
      }
       }
    }
    </script>
    </head>
    <body>
    <select id="slt">
    <option>911</option>
    <option>1121</option>
    <option>1131</option>
    <option>4131</option>
    <option>2131</option>
    </select>
    <input type="text" onpropertychange="show(this.value)"/>
    </body>
    </html>
      

  4.   

    xjdawu(无法界定),你的这个差不多了,只是有点欠缺你试试看就知道了:
    <html>
    <head>
    <script language="javascript">
    function show(value) {
      var obj = new Array()
      var x = 0
      if (value.replace(/\s+/,"")!="")
      {
        for(i=0;i<slt.options.length;i++) {
          if(slt.options[i].text.substr(0,value.length)==value) {
           obj[x] = slt.options[i];
           x++
          }
        }
        for(a in obj)
          slt.removeChild(obj[a])
      
        for (i=0;i<obj.length;i++)
        {
          for (j = 0; j < obj.length - 1 - i; j++){
            temp1 = obj[j].text*1
            temp2 = obj[j+1].text*1
            if (temp1 < temp2) {
              t = obj[j];
              obj[j] = obj[j + 1];
              obj[j+1] = t;
            }
          }
        }
      
        for (a in obj)
          slt.insertBefore(obj[a],slt.children[0])
          
        slt.options[0].selected = true
      }
    }
    </script>
    </head>
    <body>
    <select id="slt">
    <option>a</option>
    <option>ab</option>
    <option>abc</option>
    <option>b</option>
    <option>bd</option>
    <option>bde</option>
    <option>c</option>
    </select>
    <input type="text" onKeyUp="show(this.value)"/>
    </body>
    </html>
    我只是把你的select里面的option换成了字母。你运行看看,就知道了
      

  5.   

    try
    --------------------
        temp1 = obj[j].text*1  --->  temp1 = obj[j].text
        temp2 = obj[j+1].text*1  ---> temp2 = obj[j+1].text
      

  6.   

    这里的一段采用了冒泡排序的算法
    ------------------------------------
        for (i=0;i<obj.length;i++)
        {
          for (j = 0; j < obj.length - 1 - i; j++){
            temp1 = obj[j].text*1    //字符串乘以1转换成数字作比较
            temp2 = obj[j+1].text*1
            if (temp1 < temp2) {
              t = obj[j];
              obj[j] = obj[j + 1];
              obj[j+1] = t;
            }
          }
        }