`
jsntghf
  • 浏览: 2542448 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

可输入文本的下拉框

阅读更多
<html>
  <head>
    <title>ComboBox Demo</title>
    <style type="text/css">
      body           {font-size:9pt;font-family:verdana;}
      button         {cursor:hand;border:1px solid black;font-family:arial;font-size:9pt;}
      a              {color:red;}
      a:hover        {color:blue}
      .combo-button {
        cursor: pointer;
        cursor: expression("hand");
        height: 20px;
        border: 1px solid rgb(120,172,255);
        background: rgb(234,242,255);
        width: 14px;
      }
      .combo-hilite {
        cursor:    pointer;
        cursor:    expression("hand");
        background:   rgb(234,242,255);
        border:    1px solid rgb(120,172,255);
        color:    black;
        font-family: verdana;
        font-size:   9pt;
      }
      .combo-item    {
        cursor:    pointer;
        cursor:    expression("hand");
        background:   white;
        border:    1px solid white;
        color:    black;
        font-family: verdana;
        font-size:   9pt;
      }
      .combo-input   {
        border: 1px solid rgb(120,172,255) !important;
        width: 138px !important;
      }
      .combo-list-width {
        width:153px
      }
      .combo-list    {
        border:   1px solid black;
        width:    153px;
        height:   100px;
        overflow-y: auto;
        scrollbar-base-color:   rgb(234,242,255);
        scrollbar-highlight-color: rgb(234,242,255);
        scrollbar-3dlight-color: rgb(120,172,255);
        scrollbar-darkshadow-color: rgb(120,172,255);
        scrollbar-shadow-color:   rgb(234,242,255);
        scrollbar-face-color:   rgb(234,242,255);
        scrollbar-track-color:   white;
        scrollbar-arrow-color:   black;
      }
    </style>
  </head>
  <body>
    <script type="text/javascript">
      Global_run_event_hook = true;
      Global_combo_array     = new Array();
      Global_ie = document.all != null;
      Array.prototype.remove=function(dx)
      {
        if(isNaN(dx)||dx>this.length){self.status='Array_remove:invalid request-'+dx;return false}
        for(var i=0,n=0;i<this.length;i++)
        {
          if(this[i]!=this[dx])
          {
            this[n++]=this[i]
          }
        }
        this.length-=1
      }
      function ComboBox_make()
      {
        var bt,nm;
        nm = this.name+"txt";

        this.txtview = document.createElement("INPUT")
        this.txtview.type = "text";
        this.txtview.name = nm;
        this.txtview.id = nm;
        this.txtview.className = "combo-input"
        this.view.appendChild(this.txtview);

        this.valcon = document.createElement("INPUT");
        this.valcon.type = "hidden";
        this.view.appendChild(this.valcon)

        var tmp = document.createElement("IMG");
        tmp.src = "___";
        tmp.style.width = "1px";
        tmp.style.height = "0";
        this.view.appendChild(tmp);

        var tmp = document.createElement("BUTTON");
        tmp.className = "combo-button";
        if(Global_ie){tmp.innerHTML = '<span style="font-family:webdings;font-size:8pt">6</span>';}
        else{tmp.style.height='24px'}

        this.view.appendChild(tmp);

        if(Global_ie)
        {
          tmp.onfocus = function ()
          {
            this.blur();
          };
        }
        tmp.onclick = new Function ("", this.name + ".toggle()");
      }
      function ComboBox_choose(realval,txtval)
      {
        this.value          = realval;
        var samstring = this.name+".view.childNodes[0].value='"+txtval+"'"
        window.setTimeout(samstring,1)
        this.valcon.value   = realval;
      }
      function ComboBox_mouseDown()
      {
        var obj,len,el,i;
        el    = window.event.srcElement
        elcl = el.className
        if(elcl.indexOf("combo-")!=0)
        {
          len=Global_combo_array.length
          for(i=0;i<len;i++)
          {
            curobj = Global_combo_array[i]
            if(curobj.opslist)
            {
              curobj.opslist.style.display='none'
            }
          }
        }
      }
      function ComboBox_handleKey()
      {
        var key,obj,eobj,el,strname;
        eobj = window.event;
        key   = eobj.keyCode;
        el    = eobj.srcElement
        elcl = el.className
        if(elcl.indexOf("combo-")==0)
        {
          if(elcl.split("-")[1]=="input")
          {
            strname = el.id.split("txt")[0]
            obj = window[strname];

            obj.expops.length=0
            obj.update();
            obj.build(obj.expops);
            if(obj.expops.length==1&&obj.expops[0].text=="(No matches)"){}
            else{obj.opslist.style.display='block'}
            obj.value = el.value;
            obj.valcon.value = el.value;
          }
        }
      }
      function ComboBox_update()
      {
        var opart,astr,alen,opln,i,boo;
        boo=false;
        opln = this.options.length
        astr = this.txtview.value
        alen = astr.length
        if(alen==0)
        {
          for(i=0;i<opln;i++)
          {
            this.expops[this.expops.length]=this.options[i];boo=true;
          }
        }
        else
        {
          for(i=0;i<opln;i++)
          {
            opart=this.options[i].text.substring(0,alen)
            if(astr==opart)
            {
              this.expops[this.expops.length]=this.options[i];boo=true;
            }
          }
        }
        if(!boo){this.expops[0]=new ComboBoxItem("(No matches)","")}
      }

      function ComboBox_remove(index)
      {
        this.options.remove(index)
      }
      function ComboBox_add()
      {
        var i,arglen;
        arglen=arguments.length
        for(i=0;i<arglen;i++)
        {
          this.options[this.options.length]=arguments[i]
        }
      }
      function ComboBox_build(arr)
      {
        var str,arrlen
        arrlen=arr.length;str=''
        str +='<table class="combo-list-width" cellpadding=0 cellspacing=0>'

        for(var i=0;i<arrlen;i++)
        {
          str += '<tr>'
          str += '<td class="combo-item" onClick="'+this.name+'.choose(\''+arr[i].value+'\',\''+arr[i].text+'\');'+this.name+'.opslist.style.display=\'none\';"'
          str += 'onMouseOver="this.className=\'combo-hilite\';" onMouseOut="this.className=\'combo-item\'" > '+arr[i].text+' </td>'
          str +='</tr>'
        }
        str +='</table>'

        if(this.opslist){this.view.removeChild(this.opslist);}

        this.opslist = document.createElement("DIV")
        this.opslist.innerHTML=str;
        this.opslist.style.display='none';
        this.opslist.className="combo-list"
        this.opslist.onselectstart=returnFalse;
        this.view.appendChild(this.opslist);
      }
      function ComboBox_toggle()
      {
        if(this.opslist)
        {
          if(this.opslist.style.display=="block")
          {
            this.opslist.style.display="none"
          }
          else
          {
            this.update();
            this.build(this.options);
            this.view.style.zIndex = ++ComboBox.prototype.COMBOBOXZINDEX
            this.opslist.style.display="block"
          }
        }
        else
        {
          this.update();
          this.build(this.options);
          this.view.style.zIndex = ++ComboBox.prototype.COMBOBOXZINDEX
          this.opslist.style.display="block"
        }
      }
      function ComboBox()
      {
        if(arguments.length==0)
        {
          self.status="ComboBox invalid - no name arg"
        }
        this.name      = arguments[0];
        this.par       = arguments[1]||document.body
        this.view      = document.createElement("DIV");
        this.view.style.position='absolute';
        this.options   = new Array();
        this.expops    = new Array();
        this.value     = ""
        this.build   = ComboBox_build
        this.make    = ComboBox_make;
        this.choose = ComboBox_choose;
        this.add     = ComboBox_add;
        this.toggle = ComboBox_toggle;
        this.update = ComboBox_update;
        this.remove = ComboBox_remove;
        this.make()
        this.txtview = this.view.childNodes[0]
        this.valcon   = this.view.childNodes[1]

        this.par.appendChild(this.view)

        Global_combo_array[Global_combo_array.length]=this;
        if(Global_run_event_hook){ComboBox_init()}
      }
      ComboBox.prototype.COMBOBOXZINDEX = 1000
      function ComboBox_init()
      {
        document.body.attachEvent("onkeyup",ComboBox_handleKey)
        document.body.attachEvent("onmousedown",ComboBox_mouseDown)
        Global_run_event_hook = false;
      }
      function returnFalse(){return false}
      function ComboBoxItem(text,value)
      {
        this.text   = text;
        this.value = value;
      }

    </script>
    <script type="text/javascript">
      dm = new ComboBox("dm")
      dm.add(
      new ComboBoxItem("1", 1),
      new ComboBoxItem("2", 2),
      new ComboBoxItem("3", 3),
      new ComboBoxItem("4", 4),
      new ComboBoxItem("5", 5),
      new ComboBoxItem("6", 6),
      new ComboBoxItem("7", 7),
      new ComboBoxItem("8", 8)
    )
    </script>
  </body>
</html>

 

效果图:


分享到:
评论

相关推荐

    可文本输入的下拉框select

    在网页开发中,"可文本输入的下拉框select"是一种常见的交互元素,它结合了传统的HTML `&lt;select&gt;` 下拉菜单和自由文本输入的功能。这种设计可以为用户提供更灵活的选择方式,既可以快速从预设选项中选取,也可以手动...

    asp.net可输入可选择下拉框

    在这种情况下,“asp.net可输入可选择下拉框”应运而生,它结合了文本框和下拉框的优点,提供了更灵活的交互体验。 首先,我们需要理解这个自定义用户控件的工作原理。通常,它是通过JavaScript或者jQuery在客户端...

    可输入的下拉框

    在IT界,"可输入的下拉框"是一种常见的用户界面元素,它结合了文本输入框和下拉列表的功能,提供了更加便捷和高效的交互体验。下面将详细解释这个概念及其三种风格。 首先,"可输入的下拉框"通常被称为"Combobox"或...

    可输入的下拉框(autoComplete)

    标题中的“可输入的下拉框(autoComplete)”指的是自动完成或自动填充功能,它在用户界面设计中被广泛使用,特别是在Web表单和移动应用中。这种功能结合了文本输入框和下拉列表,当用户在输入框中键入文字时,系统...

    js 可输入下拉框(jquery)

    在JavaScript和jQuery的世界里,"js 可输入下拉框(jquery)"是一个常见的交互设计需求,它结合了传统下拉框的简洁性与输入框的搜索功能,为用户提供更友好的交互体验。这种组件通常被称为“Autocomplete”或...

    可手写输入的下拉框,代码少,简单

    针对这一情况,"可手写输入的下拉框"提供了一种创新解决方案,允许用户通过手写方式进行输入,增强了交互性和可用性。 这个可手写输入的下拉框设计简洁,代码量小,易于集成到项目中。开发者可以快速实现这一功能,...

    自动匹配可输入的下拉框

    在IT领域,"自动匹配可输入的下拉框"是一种常见的用户界面元素,它结合了传统的下拉选择框和搜索框的功能,提高了用户体验。这种组件通常被称为“智能下拉框”或“自动补全下拉框”。在网页设计、应用程序开发,尤其...

    【ASP.NET编程知识】ASP .NET 可编辑输入自动匹配的下拉框.docx

    ASP.NET 可编辑输入自动匹配的下拉框 本文将详细介绍 ASP.NET 可编辑输入自动匹配的下拉框的实现方法,该控件可以自动匹配用户输入的内容,并提供相关的下拉选项。本文将从三个方面介绍该控件的实现方法:首先,...

    文本下拉框自动匹配

    标题:“文本下拉框自动匹配”是一个关于前端开发中常见的交互功能实现话题,通常用于提升用户体验和简化用户输入。在Web应用程序设计中,这种技术主要用于创建动态、智能的表单元素,例如在搜索框或选择列表中,当...

    支持手动输入的下拉框

    在IT界,尤其是在前端开发中,“支持手动输入的下拉框”是一种常见的用户界面元素,它结合了传统下拉选择框的功能与文本输入框的优势,为用户提供更灵活、高效的交互体验。这种组件通常被称为“自动补全”或“类型...

    这是一个可输入下拉框组件

    然后,当这个下拉框变得“可输入”时,意味着用户不仅可以从预定义的选项中选择,还可以在框内直接输入文本。这种设计适用于那些可能包含大量选项或者用户可能知道他们想要的特定选项的情况。例如,在地址选择中,...

    可以输入的下拉框(可用于项目的)

    - **基本功能**:允许用户在指定区域输入文本,通常由`&lt;input type="text"&gt;`或`&lt;textarea&gt;`元素创建。 - **应用**:广泛用于数据收集,如用户名、密码、搜索关键词等。 3. **组合控件**: - **组合使用**:将...

    基于ASP.NET实现的可编辑的下拉框控件程序例子

    可编辑的下拉框控件允许用户不仅能够从预定义的选项列表中选择,还能直接输入文本,这为用户提供了更大的灵活性。在ASP.NET中,默认的DropDownList控件并不具备直接编辑的功能,但通过一些定制的代码和JavaScript...

    下拉框和文本框组合共用-可以输入的下拉框ok

    它允许用户输入任意文本,适用于需要用户自由输入数据的情况。 3. **组合设计**:将下拉框与文本框组合,通常是通过JavaScript或jQuery等前端库实现的。这种方式可以提供一个可搜索的下拉列表,用户既可以快速选择...

    可以输入的下拉框

    4. 查询过滤:在数据表或报告中,下拉框可用于筛选特定条件。 五、优化策略 1. 缓存策略:对大量数据进行分页加载或懒加载,减少初始加载时间。 2. 搜索优化:使用索引或预处理数据,提高搜索效率。 3. 错误处理:...

    转载:再谈“可输入的下拉框”,完全支持中文输入

    标题中的“可输入的下拉框”通常指的是在网页或应用程序设计中的一种交互元素,它结合了下拉选择框和文本输入框的功能。用户不仅可以从预定义的选项中选择,还可以自行输入文字进行搜索或创建新的选项。这种设计提高...

    comBox可输入下拉框

    在IT行业中,"comBox可输入下拉框"是一种常见的用户界面组件,它结合了文本输入框和下拉选择框的功能。这样的设计旨在提供更灵活的用户体验,允许用户既可以手动输入值,也可以从预设的选项中进行选择。在网页开发中...

    php可输入下拉框控件

    当用户开始输入时,下拉框可以通过实时过滤选项,显示出与输入文本匹配的结果。 三、PHP与前端交互 在PHP中,我们通常使用`POST`或`GET`方法接收用户在表单中提交的数据,包括下拉框的选择。当用户输入文字并提交...

    可输入,可检索的下拉框小插件。

    "可输入,可检索的下拉框小插件"是为提高这种交互性而设计的一种工具,它使得用户在输入框中不仅可以进行选择,还能通过输入关键词进行快速检索。这种功能在网页表单、数据筛选和导航等场景中非常常见。 1. **支持...

Global site tag (gtag.js) - Google Analytics