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 相关文章推荐
没有document.getElementByName方法
Aug 19 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
Feb 02 Javascript
JS实现六位字符密码输入器功能
Aug 19 Javascript
Jquery实时监听input value的实例
Jan 26 Javascript
详解React中setState回调函数
Jun 14 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
Jul 24 Javascript
js实现每日签到功能
Nov 29 Javascript
微信小程序云开发之使用云数据库
May 17 Javascript
原生js实现trigger方法示例代码
May 22 Javascript
LayUi数据表格自定义赋值方式
Oct 26 Javascript
Vue组件通信中非父子组件传值知识点总结
Dec 05 Javascript
原生js实现购物车
Sep 23 Javascript
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
五个PHP程序员工具
2008/05/26 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
Jquery选择器中使用变量实现动态选择例子
2014/07/25 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
Javascript验证方法大全
2015/09/21 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
python删除特定文件的方法
2015/07/30 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
python实现移位加密和解密
2019/03/22 Python
python实现淘宝购物系统
2019/10/25 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
银行出纳岗位职责
2013/11/25 职场文书
银行服务感言
2014/03/01 职场文书
优秀教师先进材料
2014/12/16 职场文书
Elasticsearch 批量操作
2022/04/19 Python