有时候我们需要select和input的结合体,即可以使用下拉框,同时也可以用来输入,输入的同时显示可选的下拉选项

先上html代码

<div class="input-group input-group-sm has-warning">
<span class="input-group-addon">label内容</span>
<input class='form-control' onclick="showList(this)" onkeyup="showList(this)">
</div>

对于这么个input,我们需要在点击的时候,和输入内容的时候,展示一个div,该div应该悬浮在该input下边,同时里面加上一些要选择的内容

/**
* 点击input产生下拉选项的函数
* list的内容为数组类型数据,每个元素为json,包括一个id和一个value
*/
function showList(me) {
  $('.select-drop-div').remove(); //删除已有的下拉框   var list = window.list;
  var me = $(me); //当前的input
  var val = $(me).val(); //当前的input的val
  //下拉框内部的选项
  var listIn = '';
  for (var i = 0; i < list.length; i++) {
    if (val == '') { //输入框没有内容,显示所有选项
      listIn = listIn + "<div class='select-drop-in' id=" + list[i].id + " onclick='selectDropClick(this)'>" + list[i].value + "</div>";
    } else { //输入框有内容
      if (list[i].value.indexOf(val) > -1) { //输入框的内容是值的一部分
      listIn = listIn + "<div onclick='setValueToMySelect(this)' class='select-drop-in' id=" + list[i].id + " onclick='selectDropClick(this)'>" + list[i].value + "</div>";
    }
  }
  //下拉框的div
  var listDiv = $('<div>').css('padding', '3px').css('z-index', '200').css('height', 'auto').css('width', width).css('max-height', '200px').css('overflow', 'auto').css('position', 'absolute').css('top', '35px')
  if (listIn == '') {//当输入内容没有匹配的选项时,listIn的div提示
    listIn = '<div>未查找到符合的内容<br>该输入内容将被创建!</div>'
  }
  listDiv.addClass('select-drop-div form-control').html(listIn);
  me.parent().append(listDiv);
}

对于展开的下拉选项,需要进行选择,点选的时候,应该将内容放到input中,同时对其id进行设置

/**
* 点击下拉选项的函数
*/
function selectDropClick(me) {
  var me = $(me);//当前点击对象
  var id = me.attr('id');//当前点击对象的id
  var val = me.html();//当前点击的值
  me.parent().parent().find('.form-control').val(val).attr('id', id);//赋值并写入id
  $('.select-drop-div').remove(); //删除已有的下拉框
}

对于手动对input的值进行修改,其id是否正确等校验因素,不在此写了,具体问题具体分析了就

上个效果图,实际做的时候远比上述的复杂的多(校验,id不匹配的重置,表单收集,活动条目创建等)

以上!

input和div模仿select,带输入提示的更多相关文章

  1. div模仿select效果二:带搜索框

    项目需要,要做一个首字母快速定位的select,代码如下: HTML <div class="select_country" unselectable="on&qu ...

  2. JQ模仿select

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  3. textarea自适应高度,div模仿textarea可编辑实现自适应高度,placeholder使用图标

    1.textarea自适应高度,placeholder使用图标 自适应高度,有很多种办法: 1)jq: $("textarea").on("input",fun ...

  4. div 模拟<select>事件

    IE7 下,不能够自定义<select>/<option>的样式,所以为了方便起见,用div可以进行模拟 <!doctype html> <html> ...

  5. IE6下div遮盖select的最优解决方案

    a.本节精选html5/css频道里一款IE6下div遮盖select的最优解决方案 原理:利用iframe来遮挡select,再用div来遮挡iframe,就这么简单. 1)首先,建一个div层和i ...

  6. 【IE6的疯狂之五】div遮盖select的解决方案

    IE6以及一下版本下,选择框Select会覆盖Div中的内容一般情况下,可以将显示的内容放到Iframe中,然后再显示框架内的内容.由于Iframe的可以显示在Select上层,就可以解决这个问题.不 ...

  7. hive -e执行出现「cannot recognize input near '<EOF>' in select clause」问题

    问题现象 写了一个简单的shell脚本调用hive执行组装的sql,在执行时总是报cannot recognize input near '<EOF>' in select clause错 ...

  8. input清空和重置select下拉框

    背景 一般页面搜索条件都会有input输入框和select选择框,同时页面上都会有重置reset按钮,这时就需要清空input和重置select 实现 清空input 清空单个input: $(&qu ...

  9. 七、React表单详解 约束性和非约束性组件 input text checkbox radio select textarea 以及获取表单的内容

    一.约束性和非约束性组件: 非约束性组: MV: <input type="text" defaultValue="a" /> 这个 default ...

随机推荐

  1. electron之20190320

    一.sudo npm i electron -g一直失败 最终解决办法:使用了sudo cnpm i electron -g安装成功 原因不详 二.打包问题 1.使用electron-packager ...

  2. Linux下mongodb

    Linux下mongodb安装: 新建mongodb文件夹 下载安装包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3. ...

  3. Java 反射、注解

    1. 泛型 基本用法.泛型擦除.泛型类/泛型方法/泛型接口.泛型关键字.反射泛型! a. 概述 泛型是JDK1.5以后才有的, 可以在编译时期进行类型检查,且可以避免频繁类型转化! // 运行时期异常 ...

  4. Jmeter对HTTP请求压力测试、并发测试

    最近公司需要开发一个简单的报名系统,供外网用户提供报名服务,由于我们公司是个初创的微型公司,开发人员都是刚毕业不久,开发经验相当缺乏. 对于服务器性能测试这块的经验更是少得可以忽略.迫使不得不让我们去 ...

  5. 生命不息学习不止,前端js学习笔记(一)

    引言 从毕业到年已经整整7年,期间一直从事.net开发做c/s从 c# 转到 wpf 而后又开始做b/s 用silverlight,从最开始的arcgis engine 到后来的silverlight ...

  6. M-wordL-图

    典型的需要使用图模型 将start 和 end 以及字典一同构建成图,然后探究从start到end的最短路径

  7. Appium的安装-Mac平台(命令行 & dmg)

    其实Appium的安装方式主要有两种: 1)自己安装配置nodejs的环境,然后通过npm进行appium的安装 2)直接下载官网提供的dmg进行安装,dmg里面已经有nodejs的环境和appium ...

  8. 如何跟踪比特币SV(BSV)地址余额?

    Coin Balance Tracker 能够查看任何BSV/BCH/BTC地址的当前余额.您只需要确保你的电脑能连接Internet以及地址正确.此程序非常安全,因为它只使用公共数据,不需要登录和密 ...

  9. 在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩

    上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Dock ...

  10. JavaScript的DOM_节点的增删改

    一.概述 DOM 不单单可以查找节点,也可以创建节点.复制节点.插入节点.删除节点和替换节点.  二.write()方法 write()方法可以把任意字符串插入到文档中去.会覆盖掉原来的html &l ...