`
FengShen_Xia
  • 浏览: 279364 次
  • 性别: Icon_minigender_1
  • 来自: 东方水城
社区版块
存档分类
最新评论

可输入的select下拉框

阅读更多

      当select下拉框中没有要选择的信息项时,可以直接在select中输入自己想要得信息项。

 

      在输入信息项时,不改变select下拉框中原有的信息项。

 

      通过Backspace键可以清除刚才输入的信息项,以便重新输入。如果不清除,再输入信息时,会在原来输入的基础之上继续添加信息。如:原来手动输入信息是111,如果不清除再输入222时,信息项就变成111222 

 

<html>
<head>
<title>可输入的select下拉框</title>
</head>
<script>
   
</script>
<body >
<select style='width:150px;z-index:-1' id="aa" name="selectHelpCode" onkeydown="if(event.keyCode == 8){this.options[0].text = '';}" onkeypress="writeSelect(this)">
    <option value=""></option>
    <option value="11">11</option>
    <option value="22">22</option>
    <option value="33">33</option>
</select>

<input type="button" value="点我" onclick="ttt();"/>

<script>
   
    function writeSelect(obj){
        obj.options[0].selected = "select";
        obj.options[0].text = obj.options[0].text + String.fromCharCode(event.keyCode);
        event.returnValue=false;
        return obj.options[0].text;
    }

    function ttt(){
        var ss = document.getElementById("aa").value;
        var jg = "";
       
        if(ss == ""){
            var aas = writeSelect(document.getElementById("aa"));
            jg = aas;
        }else{
            jg =     document.getElementById("aa").value;
        }
       
      alert(jg);
}
    </script>

</body>
</html>

 

    代码只是为了展示select下拉框可输入情况,具体一些细节方面,有待完善。

分享到:
评论
11 楼 clone168 2009-08-23  
<p> </p>
<div class="quote_title">clone168</div>
<div class="quote_div">输入的时候,先触发keydown然后再触发keypress</div>
<p>
 所以那个函数执行了两次,也就是不仅仅是IE下的问题了</p>
10 楼 jianguang_qq 2009-08-23  
我靠,没看到“ie有输入双字符的问题,修改中。。。”这几个字吗
9 楼 clone168 2009-08-23  
<div class="quote_title">jianguang_qq 写道</div>
<div class="quote_div">
<p>再化简下代码:</p>
<pre name="code" class="js">&lt;body &gt;
&lt;select id="select" onkeydown="selectWrite(this,event)" onkeypress="selectWrite(this,event)"&gt;
    &lt;option value=""&gt;&lt;/option&gt;
    &lt;option value="11"&gt;11&lt;/option&gt;
    &lt;option value="22"&gt;22&lt;/option&gt;
    &lt;option value="33"&gt;33&lt;/option&gt;
&lt;/select&gt;
&lt;input type="button" value="点我" id="test" onclick="test();"/&gt;
&lt;script&gt;
function selectWrite(obj,e){
var opt = obj.options[0];
opt.selected = "selected";
if((e.keyCode||e.charCode) =={
opt.text = opt.value = opt.value.substring(0, opt.value.length&gt;0?opt.value.length-1:0);
}else{
opt.text = opt.value += String.fromCharCode(e.charCode||e.keyCode);
}
}

function test(){
alert(document.getElementById("select").value);
}
&lt;/script&gt;
&lt;/body&gt;</pre>
<p> 支持逐个删除。中文支持上还有点问题,有待再优化,ie有输入双字符的问题,修改中。。。</p>
</div>
<p>不过貌似还是存在一点bug,输入的时候存在问题,输入的时候,先触发<span style="">keydown然后再触发keypress</span></p>
8 楼 clone168 2009-08-23  
<div class="quote_title">jianguang_qq 写道</div>
<div class="quote_div">
<div class="quote_title">clone168 写道</div>
<div class="quote_div">
<p>test函数不存在,<img src="/images/smiles/icon_wink.gif" alt=""></p>
<p>清除的那个函数在IE中只是把text清除了,点击按钮弹出的还是value,还是会显示出来</p>
<p>而在firefox中则出现了连text都不会清除的情况,而且,把select下拉的时候还能看到里面新增了乱码</p>
</div>
<p><br>你回复的真快,我正在修改呢。请再看上面修改后的。</p>
</div>
<p>嗯,呵呵,我正在看你的最新版,不错<img src="/images/smiles/icon_idea.gif" alt=""></p>
7 楼 jianguang_qq 2009-08-23  
<div class="quote_title">clone168 写道</div>
<div class="quote_div">
<p>test函数不存在,<img src="/images/smiles/icon_wink.gif" alt=""></p>
<p>清除的那个函数在IE中只是把text清除了,点击按钮弹出的还是value,还是会显示出来</p>
<p>而在firefox中则出现了连text都不会清除的情况,而且,把select下拉的时候还能看到里面新增了乱码</p>
</div>
<p><br>你回复的真快,我正在修改呢。请再看上面修改后的。</p>
6 楼 clone168 2009-08-23  
<div class="quote_title">jianguang_qq 写道</div>
<div class="quote_div">
<p>再化简下代码:</p>
<pre name="code" class="js">&lt;select style='width:150px;z-index:-1' id="aa" name="selectHelpCode" onkeydown="if(event.keyCode =={this.options[0].text = '';}" onkeypress="writeSelect(this,event)"&gt;
    &lt;option value=""&gt;&lt;/option&gt;
    &lt;option value="11"&gt;11&lt;/option&gt;
    &lt;option value="22"&gt;22&lt;/option&gt;
    &lt;option value="33"&gt;33&lt;/option&gt;
&lt;/select&gt;

&lt;input type="button" value="点我" id="test" onclick="test();"/&gt;
&lt;script&gt;  
function writeSelect(obj,e){
opt = obj.options[0];
opt.selected = "selected";
opt.text = opt.value += String.fromCharCode(e.charCode||e.keyCode);
}

function ttt(){
alert(document.getElementById("aa").value);
}
&lt;/script&gt;</pre>
<p> 只优化了两个函数实现,命名、html等我就不优化了,知道lz也是为了测试随便写的</p>
</div>
<p>test函数不存在,<img src="/images/smiles/icon_wink.gif" alt=""></p>
<p>清除的那个函数在IE中只是把text清除了,点击按钮弹出的还是value,还是会显示出来</p>
<p>而在firefox中则出现了连text都不会清除的情况,而且,把select下拉的时候还能看到里面新增了乱码</p>
5 楼 clone168 2009-08-23  
<p>
</p>
<pre name="code" class="html">&lt;select style='width:150px;z-index:-1' id="aa" name="selectHelpCode" onkeydown="clearOption(this,event)" onkeypress="writeSelect(this,event)"&gt;
  &lt;option value=""&gt;&lt;/option&gt;
  &lt;option value="11"&gt;11&lt;/option&gt;
  &lt;option value="22"&gt;22&lt;/option&gt;
  &lt;option value="33"&gt;33&lt;/option&gt;
&lt;/select&gt;
&lt;input type="button" value="点我" onclick="ttt();"/&gt;</pre>

<pre name="code" class="js">function clearOption(obj,e){
var currKey=0,e=e||event;
    currKey=e.keyCode||e.which||e.charCode;
if(currKey =={
obj.options[0].text = "";
}
}
function writeSelect(obj,e){
var currKey=0,e=e||event;
    currKey=e.keyCode||e.which||e.charCode;
obj.options[0].selected = "select";
if(currKey !={//这个地方是为了避免在firefox又出现令人厌烦的乱码,可以试试注释这句话,看看在firefox的效果
obj.options[0].text = obj.options[0].text + String.fromCharCode(currKey);
}
e.returnValue=false;
return obj.options[0].text;
}
function ttt(){
var jg = document.getElementById("aa").options[document.getElementById("aa").selectedIndex].text;
//当然也可以在前面的writeSelect函数里面同时设置options的value,这样的话,直接可以在该程序里面用value取出
alert(jg);
}
</pre>
 
<p>
 仅仅是在原来的基础上修改,包括命名都没有考虑,甚至函数的个数都没有改变<img src="/images/smiles/icon_biggrin.gif" alt=""></p>
<p> 当然这里还可以优化,两个函数有一部分是相同的,其实可以再封装一次,方便以后调用,楼主可以试试,呵呵</p>
4 楼 jianguang_qq 2009-08-23  
<p>再化简下代码:</p>
<pre name="code" class="js">&lt;select id="select" onkeydown="Select.del(this,event)" onkeypress="Select.write(this,event)"&gt;
    &lt;option value=""&gt;&lt;/option&gt;
    &lt;option value="11"&gt;11&lt;/option&gt;
    &lt;option value="22"&gt;22&lt;/option&gt;
    &lt;option value="33"&gt;33&lt;/option&gt;
&lt;/select&gt;
&lt;input type="button" value="点我" id="test" onclick="test();"/&gt;
&lt;script&gt;
var Select = {
del : function(obj,e){
if((e.keyCode||e.which||e.charCode) =={
var opt = obj.options[0];
opt.text = opt.value = opt.value.substring(0, opt.value.length&gt;0?opt.value.length-1:0);
}
},
write : function(obj,e){
if((e.keyCode||e.which||e.charCode) ==return ;
var opt = obj.options[0];
opt.selected = "selected";
opt.text = opt.value += String.fromCharCode(e.charCode||e.which||e.keyCode);

}
}

function test(){
alert(document.getElementById("select").value);
}
&lt;/script&gt;</pre>
<p> 支持逐个删除。ff中文支持上还有点问题,有待再优化。</p>
<p> </p>
<p>该死的ie 和ff事件兼容性问题。</p>
<p>楼主例子很不错,让我在优化过程中学到了,好些东西。一会儿总结一下。</p>
3 楼 jianguang_qq 2009-08-23  
作者创意不错,赞一个 !!!

onkeypress="writeSelect(this)" 改成 onkeypress="writeSelect(this,event)";
function writeSelect(obj) 改成 function writeSelect(obj,event)
String.fromCharCode(event.keyCode) 改成 String.fromCharCode(event.charCode||event.keyCode)
就支持ff了。

可惜ff下不支持中文,囧,去查查原因。
2 楼 clone168 2009-08-23  
又是一个不支持firefox的程序~~~
1 楼 fhyfufangyu 2009-07-27  
backspace 没有用啊?

相关推荐

    可进行输入编辑的select下拉框

    下拉框选择已有固定value,也可以选择后进行编辑,也可以直接输入数值。

    select下拉框添加搜索功能

    这就是"select下拉框添加搜索功能"这个知识点的核心所在。 在`select`下拉框中实现搜索功能,一般有两种常见方法:一种是原生HTML和JavaScript的实现,另一种是借助第三方库,如本例中的`jquery.editable-select`。...

    可文本输入的下拉框select

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

    写一个可编辑的select下拉框

    ### 可编辑Select下拉框实现方法 #### 一、引言 在现代Web开发中,用户界面(UI)的设计对于提升用户体验至关重要。一个常见的需求是实现一个可编辑的`&lt;select&gt;`下拉框,即允许用户不仅能从下拉列表中选择选项,还...

    可输入的下拉框

    "可输入的下拉框"是一种常见的交互元素,它结合了传统下拉菜单与搜索输入框的功能,使得用户在选择选项时可以更加高效和精确。这种设计常见于网页和应用程序中,用于提供多样化的选择并允许用户通过输入关键词快速...

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

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

    搜索功能select下拉框实现自动匹配

    带搜索功能的select下拉框,类似百度google的搜索框,自己匹配,很好用

    jQGrid动态填充select下拉框的选项值(动态填充)

    在某些场景下,我们需要动态地填充select下拉框的选项值,以实现更灵活的数据输入。本篇文章将详细探讨如何在jQGrid中实现这一功能。 首先,理解`select`下拉框的基本概念。在HTML中,`&lt;select&gt;`元素用于创建一个...

    js 可输入下拉框(jquery)

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

    select下拉框可编辑输入框

    在网页设计中,"select下拉框可编辑输入框"是一种常见的交互元素,它结合了传统的HTML `&lt;select&gt;` 元素和输入框的功能,让用户在下拉选项中选择的同时,也能自由输入其他值。这样的设计增加了用户体验的灵活性,特别...

    bootstrap select 下拉框通过拼音搜索汉字

    在“bootstrap select 下拉框通过拼音搜索汉字”这个实例中,我们关注的重点是如何利用该插件实现通过输入拼音来搜索并筛选汉字的功能,这对于中文环境下的用户体验提升有着显著的作用。 首先,我们要了解Bootstrap...

    Freemarker通用select下拉框

    首先,理解`select`下拉框在HTML中的基本结构,它由`&lt;select&gt;`标签定义,内部包含一系列`&lt;option&gt;`标签,每个`&lt;option&gt;`代表一个可选的值和显示文本: ```html &lt;select&gt; &lt;option value="value1"&gt;Text1 ...

    可输入的下拉框.rar

    可输入的下拉框通常由HTML的`&lt;select&gt;`元素和`&lt;option&gt;`元素组合而成,但为了实现输入功能,前端开发者会使用JavaScript或者一些现成的库(如Select2、Chosen等)来扩展其功能。当用户在输入框中键入字符时,下拉框...

    Javascript 操作select下拉框

    ### JavaScript 操作 Select 下拉框的关键知识点 在 Web 开发中,`&lt;select&gt;` 元素用于创建下拉列表(或选择框)。这些选择框在用户界面中非常常见,可以用来收集用户输入的信息,比如让用户从一系列选项中选择一个...

    可输入的下拉框(autoComplete)

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

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

    标题中的“可以输入的下拉框(可用于项目的)”是指一种交互式UI组件,它结合了传统下拉框和文本输入框的功能,用户既可以从中选择已有的选项,也可以自行输入新的内容。这种设计在许多Web应用和软件项目中非常常见,...

    可编辑的select下拉框

    `jQuery Editable Select`就是这样一个插件,它允许用户在下拉框中直接编辑输入,同时根据输入的内容实时过滤选项,提高了用户在大量数据中的查找效率。 `jQuery Editable Select`插件的工作原理是将标准的`&lt;select...

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

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

    可输入下拉框(select)源代码

    传统的HTML `&lt;select&gt;` 标签仅允许用户从预定义的选项中选择,但可输入下拉框允许用户在输入时获取匹配建议,从而提供更灵活、高效的搜索体验。下面我们将深入探讨这种技术的工作原理、实现方式以及其相关的源代码。...

Global site tag (gtag.js) - Google Analytics