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 27 Javascript
FLASH 广告之外的链接
Dec 16 Javascript
JS 树形递归实例代码
May 18 Javascript
Javascript中的window.event.keyCode使用介绍
Apr 26 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
Jan 08 Javascript
js字符串完全替换函数分享
Dec 03 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
Dec 14 Javascript
JS中的eval 为什么加括号
Apr 13 Javascript
Jquery ajax请求导出Excel表格的实现代码
Jun 08 Javascript
jQuery DateTimePicker 日期和时间插件示例
Jan 22 Javascript
老生常谈angularjs中的$state.go
Apr 24 Javascript
vue组件实践之可搜索下拉框功能
Nov 25 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 str_pad 函数用法简介
2009/07/11 PHP
php 高效率写法 推荐
2010/02/21 PHP
从php核心代码分析require和include的区别
2011/01/02 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
python读写json文件的简单实现
2017/04/11 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
使用Python实现企业微信的自动打卡功能
2019/04/30 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
基于Python实现扑克牌面试题
2019/12/11 Python
python重要函数eval多种用法解析
2020/01/14 Python
Python 使用office365邮箱的示例
2020/10/29 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
军训生自我鉴定范文
2013/12/27 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
村官个人总结范文
2015/03/03 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python