javascript实现的一个带下拉框功能的文本框


Posted in Javascript onMay 08, 2014

有时我们需要一个可选的下拉框来选取内容,但是但是又有可以自定义输入的需求。对于这种需求,大部分网站使用的都是一个下拉框和一个 input text ,并列或分行给出选择。那么,我们希望它看上去像一个可以输入也可以选择的下拉框,那该如何做呢?

其实我们可以通过 css position 定位及少许的 javascript 代码,模拟出来这种效果。

<!DOCTYPE html>
<html>
<head>
 <title>可编辑可选择的下拉框</title>
 <meta charset="utf-8">
 <style>
  .list-name-input{
   color: #333;
   font-family: tahoma, 'Microsoft YaHei', 'Segoe UI', Arial, 'Microsoft Yahei', Simsun, sans-serif;
   font-size: 15px;
   font-weight: bold;
   height: 50px;
   margin: 0px;
   padding: 0px;
   position: relative;
   width: 530px;
  }
  .list-name-for-select{
   border: 0;
   color: #555;
   height: 20px;
   lighting-color: rgb(255, 255, 255);
   line-height: 20px;
   margin:0 0 10px 0;
   outline-color: #555;
   outline-offset: 0px;
   outline-style: none;
   outline-width: 0px;
   padding: 4px 6px;
   position: absolute;
   top: 1px;
   left: 3px;
   vertical-align: middle;
   width: 486px;
  }
  .list-name-input-for-select:focus{
   border: 0;
   border-radius: 0;
  }
  .list-select{
   background-color: #FFF;
   border:1px #ccc solid;
   border-radius: 4px;
   color: #555;
   cursor: pointer;
   height: 30px;
   left: 0px;
   margin:0 0 10px 0;
   padding: 4px 6px;
   position: absolute;
   top: 0px;
   vertical-align: middle;
   white-space: pre;
   width: 530px;
  }
 </style>
</head>
<body>
 <div id="list-name-input" class="list-name-input">
     <select type="text" class="list-select" id="list-select">
         <option value="">
             新建
         </option>
         <option value="0">
             10-NGCFG-update-1000
         </option>
         <option value="1">
             11-NGCFG-update-1000
         </option>
         <option value="2">
             111
         </option>
         <option value="3">
             12-NGCFG-update-1000
         </option>
         <option value="4">
             13-NGCFG-update-1000
         </option>
         <option value="5">
             14-NGCFG-update-1000
         </option>
         <option value="6">
             15-NGCFG-update-1000
         </option>
         <option value="7">
             16-NGCFG-update-1000
         </option>
         <option value="8">
             17-NGCFG-update-1000
         </option>
         <option value="9">
             18-NGCFG-update-1257
         </option>
         <option value="10">
             2-NGCFG-update-100
         </option>
         <option value="11">
             3-NGCFG-update-150
         </option>
         <option value="12">
             4-NGCFG-update-200
         </option>
         <option value="13">
             5-NGCG-update-250
         </option>
         <option value="14">
             6-NGCFG-update-418
         </option>
         <option value="15">
             7-NGCFG-update-500
         </option>
         <option value="16">
             8-NGCFG-update-1000
         </option>
         <option value="17">
             9-NGCFG-update-1000
         </option>
         <option value="18">
             @ALL
         </option>
         <option value="19">
             @CNC-BJ-4
         </option>
         <option value="20">
             CNC-BJ--测试
         </option>
         <option value="21">
             test
         </option>
     </select>
     <input type="text" class="name item-width list-name-for-select" id="list-name-for-select">
 </div>
 <script>
  var listName = document.getElementById('list-name-for-select');
  var listSelect = document.getElementById('list-select').onchange = function(e){
   console.log(this)
   if(this.value){
    listName.value = this.value + ' | ' + this.options[this.selectedIndex].text;
   }else{
    listName.value = ''
   }
  };
 </script>
</body>
</html>
Javascript 相关文章推荐
js取消单选按钮选中并判断对象是否为空
Nov 14 Javascript
Javascript函数的参数
Jul 16 Javascript
基于AngularJS前端云组件最佳实践
Oct 20 Javascript
自己封装的一个原生JS拖动方法(推荐)
Nov 22 Javascript
总结几道关于Node.js的面试问题
Jan 11 Javascript
javascript判断回文数详解及实现代码
Feb 03 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
Feb 16 Javascript
微信小程序开发之入门实例教程篇
Mar 07 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
小程序图片长按识别功能的实现方法
Aug 30 Javascript
使用微信SDK自定义分享的方法
Jul 03 Javascript
原生jQuery实现只显示年份下拉框
Dec 24 jQuery
javascript解析json数据的3种方式
May 08 #Javascript
Javascript异步编程模型Promise模式详细介绍
May 08 #Javascript
JS获取随机数函数可自定义最小值最大值
May 08 #Javascript
js数组操作常用方法
May 08 #Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
May 08 #Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 #Javascript
javascript操作excel生成报表示例
May 08 #Javascript
You might like
session在PHP大型web应用中的使用
2011/06/25 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
原生js实现购物车功能
2020/09/23 Javascript
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
南京某软件公司的.net面试题
2015/11/30 面试题
酒店保洁主管岗位职责
2013/11/28 职场文书
就业协议书怎么填
2014/09/15 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
表扬稿格式范文
2015/01/16 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技