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 相关文章推荐
Javascript开发包大全整理
Dec 22 Javascript
清空上传控件input file的值
Jul 03 Javascript
node.js中的querystring.parse方法使用说明
Dec 10 Javascript
js控制页面的全屏展示和退出全屏显示的方法
Mar 10 Javascript
JavaScript事件用法浅析
Oct 31 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
May 07 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
May 11 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 Javascript
Vuepress 搭建带评论功能的静态博客的实现
Feb 17 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
Nov 04 jQuery
js面试题之异步问题的深入理解
Sep 20 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 mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
python自动化测试之setUp与tearDown实例
2014/09/28 Python
护士实习鉴定范文
2013/12/22 职场文书
军训生自我鉴定范文
2013/12/27 职场文书
学习党课思想汇报
2013/12/29 职场文书
商务会议邀请函
2014/01/09 职场文书
企业管理培训感言
2014/01/27 职场文书
工作保证书范文
2014/04/29 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python