在IE6.0中发现一个问题,下拉窗口打开后,假设当前选择项为0,在dropdownlist的onkeypress事件处理脚本中通过selectIndex=1来修改当前选中项,此时若鼠标点击到当前dropdownlist之外,当前选中项又恢复原始值0,而不是1。如果下拉窗口未打开,则为1。
请问这是什么原因?

解决方案 »

  1.   

    增加select 的onkeypress事件,但是事先对应好,每个键所触发的动作
      

  2.   

    http://joe.2418.com/programme/html/inputAndDrop/inputAndDrop.htm
    http://joe.2418.com/programme/html/inputAndDrop.rar不过是汉字,不是拼音 -_-
      

  3.   

    var strKey;
    var lasttimer=Date.parse(Date());
    var timelimit=2000;    function onKeyPress()
    {
     if(strKey==null)
     {
      strKey="";
     }
     var length;
     var strText;
     var timer;
     var TheForm;
     TheForm=event.srcElement;
     timer=Date.parse(Date());
     if(timer-lasttimer>timelimit)
      {strKey="";}
     lasttimer=timer;
     strKey=strKey + String.fromCharCode(window.event.keyCode); 
     length=TheForm.length;
     for(i=0;i<length;i++)
     {
      strText=TheForm.options[i].text;
      strText=strText.toLowerCase();
      intI=strText.indexOf(strKey);
      if (intI==0)
      {
       TheForm.options[i].selected=true;
       window.event.returnValue=false;
       return;
      }   
     } 
    }
    这个可以实现
    但是只能实现一个
      

  4.   

    joe820302(joe):你的方案要输汉字,与我的目标差距较大,遗憾
    whb147(dodo):你的代码好象没有实现"拼音"首字母
      

  5.   

    关键是要中文转成拼音.
    秋水老大写的.
    http://www.blueidea.com/user/qswh/GB2312.html
      

  6.   

    自己写的一个过滤选项的.只是,
    你得预先把中文首字拼音存起来..<script>
    function Filteropts()
    {
        var opart,astr,alen,opln,i,boo;
        boo = false;
    var result = new Array();
    var opts = document.all.sel1clone.options;
        opln = opts.length;
        astr = document.all.txt1.value.toLowerCase();
        alen = astr.length;
        if(alen == 0)
        {
            for(i=0;i<opln;i++)
            {
                  result[result.length] = opts[i];boo = true;
            }
        }
        else
        {
            for(i=0;i<opln;i++)
            {
                 opart = opts[i].value.toLowerCase().substring(0,alen)
                 if(astr == opart)
                 {
                       result[result.length]=opts[i];boo=true;
                 }
            }
        }
         if(!boo){result[0] = ""}
     return result;
    }
    function bao()
    {
        var opts = document.all.sel1.options;
    arr = Filteropts();
    opts.length=0;
    for(var i=0;i<arr.length;i++)
    {
        opts[opts.length] = new Option(arr[i].text,arr[i].value);
    }
    }
    </script> 
    <!--过滤显示-->
    <input type="text" name="txt1" onkeyup="bao()">
    <select name="sel1">
    <option value="zjmz">专家门诊
    <option value="wddfwt">我的得分问题
    <option value="wdwt">我的问题
    <option value="wdj">我的家
    </select>
    <!--源数据-->
    <select name="sel1clone" style="display:none">
    <option value="zjmz">专家门诊
    <option value="wddfwt">我的得分问题
    <option value="wdwt">我的问题
    <option value="wdj">我的家
    </select>
    </body>
    </html>
      

  7.   

    wanghr100(灰豆宝宝.net):秋水老大那个我看了,实现第一个汉字首字母拼音的效果,接近我的要求。
    不过有个问题见http://expert.csdn.net/Expert/topic/3048/3048759.xml?temp=.328808,这个问题我发了新帖,但是不出现在论坛列表里,只出现在"我的问题"里,怪
      

  8.   

    以前作项目,曾经用vc 做了一个activex控件,嵌入到页面里面,很好用,速度也很快。
      

  9.   

    汉字内码是按拼音次序排的,而unicode的汉字不是按拼音排的,js中汉字都是unicode,需要unicode到国标内码的转换,目前找不到现成函数,只能把整个二级汉字库放在脚本里进行查表
      

  10.   

    wanghr100(灰豆宝宝.net):先发50分