转载地址:http://www.open-open.com/lib/view/open1420624048437.html

今天写了个下拉插件分享出来 
效果: , 可以搜素,也可以使用上下键选择匹配出来的值

css

 .select4_box {
     border: 1px solid #5897fb;
     position: absolute;
     width: 250px;
     background: #fff;
     border-radius: 4px;
     -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
     box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
     z-index: 9999;
 }

 .select4_box ul {
     padding: 0px;
     margin: 5px;
 }

 .select4_box ul li {
     list-style: none;
     padding: 3px 7px 4px;
     cursor: pointer;
 }

 .select4_box ul li:hover {
     background: #51A9A9;
     color: #fff;
 }

 .select4_box ul li.active {
     background: #3875d7;
     color: #fff;
 }

html

<input type="text"  name="Shoushuid"  class="Shoushuid"  autocomplete="off">
<input type="text"  name="Jiancha_xiangmu"  class="Jiancha_xiangmu"  autocomplete="off">

jQuery插件

 (function ($) {
     $.fn.extend({
         select4: function (options) {
             var defaults = {
                 ajax_url: true
             }
             var options = $.extend(defaults, options);

             return this.each(function () {
                 $(".h2").remove();
                 var mythis = $(this);

                 $(document).on("click", ".select4_box li", function () {
                     mythis.val($(this).text());
                     $(".select4_box").remove();
                 });

                 $(document).click(function (event) {
                     $(".select4_box").remove();
                 });

                 $(".select4_box").click(function (event) {
                     event.stopPropagation();
                 });

                 mythis.click(function (event) {
                     var val = $(this).val();
                     console.log(val);
                     var mythis = $(this);
                     var width = $(this).width() + 14 + "px";
                     var top = $(this).position().top + 30;
                     var left = $(this).position().left;
                     $.ajax({
                         url: options.ajax_url,
                         dataType: "json",
                         data: {name: val},
                         success: function (json) {
                             if (json.data) {
                                 var html = '<div class="select4_box"><ul>';
                                 $.each(json.data, function (k, v) {
                                     html += '<li alt="' + v.id + '">' + v.name + '</li>';
                                 });
                                 html += '</ul></div>'
                                 $(".select4_box").remove();
                                 mythis.after(html);
                                 $(".select4_box").css({top: top, left: left, width: width});
                             }
                         }
                     });
                 });

                 mythis.keyup(function (event) {
                     if (event.keyCode == 40) {
                         var index = $(".select4_box li.active").index() + 1;
                         $(".select4_box li").eq(index).addClass('active').siblings().removeClass('active');
                         mythis.val($(".select4_box li.active").text());
                     } else if (event.keyCode == 38) {
                         var index = $(".select4_box li.active").index() - 1;
                         if (index ) {
                             index = $(".select4_box li").length - 1;
                         }
                         $(".select4_box li").eq(index).addClass('active').siblings().removeClass('active');
                         mythis.val($(".select4_box li.active").text());
                     } else if (event.keyCode == 13) {
                         event.stopPropagation();
                         alert($(".select4_box li.active").text());
                         mythis.val($(".select4_box li.active").text());
                         return false;
                     } else {
                         mythis.trigger("click");
                     }
                 });

             });

         }
     });
 })(jQuery);

使用

<script>
$(function(){
    //ajax_url是这个input绑定的ajax数据地址
    $(".Jiancha_xiangmu").select4({"ajax_url":"/jiancha/select"});
    $(".Shoushuid").select4({"ajax_url":"/jiancha/select"});
});
</script>

这个ajax的数据必须是这种格式的,当然你也可以改,插件那里我写的应该都能看懂

ajax数据,我后台使用的是go语言,你也可以换成你熟悉的语言

func (this *JianchaController) Select() {
	var name = this.GetString("name")
	where := models.NewWhere()
	if name != "" {
		where["like__name"] = "%" + name + "%"
	}
	data, _ := models.M("jiancha").Where(where).Select()
	this.AjaxReturn(1, "ok", data)
}

jquery 仿百度搜索下拉框的插件的更多相关文章

  1. z-blog博客组插件openSug.js百度搜索下拉框提示代码

      z-blog安装openSug插件即可获得带有“搜索框提示”功能的搜索框,让z-blog搜索更便捷! https://www.opensug.org/.../opensug_z-blog_v1.0 ...

  2. Dropdown.js基于jQuery开发的轻量级下拉框插件

    Dropdown.js 前言 在SPA(Single Page Application)盛行的时代,jQuery插件的轮子正在减少,由于我厂有需求而开发了这个插件.如果觉得本文对您有帮助,请给个赞,以 ...

  3. Springboot+Vue实现仿百度搜索自动提示框匹配查询功能

    案例功能效果图 前端初始页面 输入搜索信息页面 点击查询结果页面 环境介绍 前端:vue 后端:springboot jdk:1.8及以上 数据库:mysql 核心代码介绍 TypeCtrler .j ...

  4. jQuery自定义漂亮的下拉框插件8种效果演示

    原始的下拉框不好看这里推荐一个jQuery自定义漂亮的下拉框插件8种效果演示 在线预览 下载地址 实例代码 <!DOCTYPE html> <html lang="en&q ...

  5. jquery选中将select下拉框中一项后赋值给text文本框

    jquery选中将select下拉框中一项后赋值给text文本框,出现无法将第一个下拉框的value赋值给文本框 因为select默认选中第一项..在选择第一项时,便导致无法激发onchange事件. ...

  6. jquery+html三级联动下拉框

    jquery+html三级联动下拉框及详情页面加载时的select初始化问题   html写的三个下拉框,如下: <select name="ddlQYWZYJ" id=&q ...

  7. 基于jQuery select下拉框美化插件

    分享一款基于jQuery select下拉框美化插件.该插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览   源码下 ...

  8. ComboBox可搜索下拉框的使用注意事项,简单记录以及我遇到的一些奇怪的bug

    前几天做一个react的项目的时候需要用一个可搜索的下拉框ComboBox,上代码: <ComboBox // className={comboxClassName} items={storeA ...

  9. layui-table-column-select(layui数据表格可搜索下拉框select)

    layuiTableColumnSelect 在layui table的基础上对表格列进行扩展:点击单元格显示可搜索下拉列表. 码云地址:https://gitee.com/yangqianlong9 ...

随机推荐

  1. IntelliJ IDEA 常用快捷键列表及技巧大全

    IntelliJ Idea 常用快捷键列表 Alt+回车 导入包,自动修正Ctrl+N  查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L  格式化代码Ctrl+Alt+O 优化导入的类和 ...

  2. aspx、ashx、asmx文件处理请求效率比较

    人生总是面临着许多抉择许多困惑!作为一名“攻城师”或“程序猿”的我们,工作的时候更是如此.你曾经是否苦恼过在系统中使用哪种文件编写客户端请求最合适或最高效呢?aspx.ashx.asmx到底该如何选择 ...

  3. mybatis Result Maps collection already contains value for com.ebways.dictionary.dao.impl.PtInfoDaoImpl.beanMap

    java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.conte ...

  4. Linux安装字体

    用惯了Win7的字体,感觉雅黑看着很舒服,就动手在Linux安装下,简单描述下: 第一步:百度一下,找到微软雅黑字体(.ttf)下载 第二步:把下载的字体放到cd /usr/share/fonts/z ...

  5. PHP无法编译undefined reference to `libiconv_open

    ./configure --prefix=/usr/local/php52 make时提示:.....................................................e ...

  6. ios 在ios9中 NSNotificationCenter addObserver 不会影响对象释放

    如题,ios9上,  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test) name:@&qu ...

  7. MySQL(MariaDB)的 SSL 加密复制

    背景: 在默认的主从复制过程或远程连接到MySQL/MariaDB所有的链接通信中的数据都是明文的,在局域网内连接倒问题不大:要是在外网里访问数据或则复制,则安全隐患会被放大很多.由于项目要求需要直接 ...

  8. 针对SYN洪水攻击的防御措施

    可以运用sysctl命令进行配置,由于本命令参数较多,这里只简单记录几个比较常用的参数: 1.tcp_max_syn_backlog 这个参数指定了后备队列可维持的TCP半开连接的数目,如果该值设定很 ...

  9. 【leetcode】Remove Nth Node From End of List(easy)

    Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...

  10. 6. ZigZag Conversion

    题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l ...