或者说多个文本框公用一个select,反正只要实现几个文本框都能有一个下拉的可选列表就行,拜托了,帮帮我

解决方案 »

  1.   

    <!--
    selEdit.htc
    作者 : 梅雪香(meixx)
    时间 : 2005-11-14
    描述 : selEdit(htc) v1.0
    调用方法:在<head></head>中添加
    <style type="text/css">
    .selEdit{  behavior: url(selEdit.htc);}
    </style>
       为需要菜单的对象添加  class="selEdit"
       e.g : <input type="text" class="selEdit" values="杨延昭;杨志;杨铁心;杨文广" id="txtSelEdit" size="20">-->
    <!--
    接口定义
    -->
    <public:component>
       <public:property name="description"    value="mxxCalendar" />
       <public:property name="version"     value="1.0.0.0" />   <public:attach  event="oncontentready"   onevent="init()"   />
       <public:attach  event="onfocus"   onevent="showSelEdit()" /></public:component>
    <!--
    组件实现
    --><script id="ppScript" language="javascript">
    document.onkeydown = function(){ alert(window.event.keyCode);};
    </script>
    <script language="javascript">
    var oPopup = null; //popup对象,作为载体
    var arrText = element.values.split(";");function init(){
    oPopup= window.createPopup();
    var oPopDoc = oPopup.document;
    var oPopBody = oPopDoc.body;
    oPopDoc.oncontextmenu = function (){ return false; };
    oPopBody.onselectstart = function (){ return false; };
    initPopupItem(oPopDoc);
    }function initPopupItem(pDoc){
    var pBody = pDoc.body;
    for(var i = 0; i < arrText.length; i++){
    var newDiv = pDoc.createElement('div');
    newDiv.innerText = arrText[i];
    divAttach(newDiv);
    pBody.appendChild(newDiv);
    }
    pBody.style.scrollbarBaseColor = "#DEEAF6";
    pBody.style.scrollbarHighlightColor = "#DEEAF6";
    pBody.style.scrollbarShadowColor = "#DEEAF6";
    pBody.style.scrollbarArrowColor = "#000080"; pBody.style.backgroundColor = "#DEEAF6";
    pBody.style.border = "solid #6BBFD9 1px";
    var oStyleSheet=pDoc.createStyleSheet(); 
    oStyleSheet.addRule("div", "color:#000080; vertical-align:middle; font-size:12px; text-align: center; border:1px solid; border-color:  #FFFFFF  #D4D0C8 #D4D0C8 #FFFFFF ; width:100%; height:16; cursor:default;");
    }function divAttach(newDiv,obj,val){
    newDiv.attachEvent("onmouseover",function(){
    newDiv.style.color = "#FFFFF1";
    newDiv.style.backgroundColor = "#6BBFD9";
    });
    newDiv.attachEvent("onmouseout",function(){
    newDiv.style.color = "#000080";
    newDiv.style.backgroundColor = "#DEEAF6";
    });
    newDiv.attachEvent("onclick",function(){
    oPopup.hide();
    element.value = newDiv.innerText.trim();
    });
    }//显示selEdit控件
    function showSelEdit(){
    var txtObj = element;
    var left = txtObj.offsetLeft;
    var top = txtObj.offsetTop;
    while(txtObj = txtObj.offsetParent){
    left += txtObj.offsetLeft;
    top += txtObj.offsetTop;
    }
    top += element.clientHeight+6;
    left += 4;
    var oBody = oPopup.document.body;
    oPopup.show(left, top, element.clientWidth,20, document.body);
    oBody.style.overflow = "auto";
    var height = oBody.scrollHeight;
    height = (height > 160? 160: height) ;
    oPopup.show(left, top, element.clientWidth,height, document.body);
    }String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g,"");}
    </script>
      

  2.   

    <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
            temp2 = obj[j+1].text
            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>我们</option>
    <option>我的</option>
    <option>你们</option>
    <option>你的</option>
    <option>你的什么</option>
    </select>
    <input type="text" onKeyUp="show(this.value)"/>
    </body>
    </html>
      

  3.   

    to xjdawu(无法界定):我也试了,运行起来,没有效果呀
      

  4.   

    楼上的就行了,用不着搞个meixx的那么复杂.
      

  5.   

    meixx 的还是很有效的 方法你不会用吗? 先把他给的那段代码保存为 selEdit.htc 文件
    然后
    在程序的开头
    <style type="text/css">
    .selEdit{  behavior: url(selEdit.htc);}
    </style>
    然后使用时
    指定样式selEdit
    <input type="text" class="selEdit" values="杨延昭;杨志;杨铁心;杨文广" id="txtSelEdit" size="20">
    就可以了
    不过说真的,我不喜欢用htc,更加不喜欢用window.createPopup();
    暂时不合标准
      

  6.   

    htc我觉得以后应该可以得到增强
    那么好的一个东西。。
      

  7.   

    谢谢patchclass(黑翼)的讲解,挺详细的,我也实现起来了,不过我发现跟我的要求有点不同,我不仅要出现下拉菜单可以选择,还希望当输入字符后,能将相似的移到上面。
      

  8.   

    我个人比较喜欢popup,可惜不是每个浏览器都支持,用iframe做载体也一样可以实现.
      

  9.   

    onKeyDown="if(event.keyCode==13) search();"