JS快速实现下拉及下拉搜索
2018-01-31 15:36
615 查看
//绑定下拉 function bindSelectOption(obj) { $('#' + obj + '_list li').click(function () { var obj_name = $(this).find('a').text(); var obj_id = $(this).data('id'); $('#' + obj + '_id').val(obj_id); $('#' + obj + '_name').val(obj_name); $('#' + obj + '_list').hide(); }); } //绑定搜索(延时搜索) function bindSearchOption(obj) { var last; $('#' + obj + '_name').keyup(function (event) { $this = $(this); if (obj != 'customer') { $('#' + obj + '_list li').hide().filter(":contains('" + ($(this).val()) + "')").show(); } else { last = event.timeStamp; setTimeout(function () { if (last - event.timeStamp == 0) { $('#customer_list').hide(); search_customer_name($this.val()); } }, 1000); } }); } function search_customer_name(customer_name) { if (customer_name == '') { return false; } var paramas = { 'customer_name': customer_name, } $.ajax({ type: "post", url: "/crm/Customer/searchName", data: paramas, dataType: 'json', success: function (result) { if (result.errorCode == 1) { popx(result.errorMsg, 5); } else { if (result.data.length > 0) { let liLine = `<li data-id="0"> <a href="javascript:void(0)">不限</a> </li>`; $.each(result.data, function (key, value) { liLine += `<li data-id='${value.id}'> <a href="javascript:void(0)">${value.name}</a> </li>` }); $('#customer_list').html(liLine).show(); bindSelectOption('customer'); } } }, }); }
html代码
<span class="select-box inline" style="margin-right:10px;">项目: <div class="btn-group" style="width:10%;"> <input class="dropdown-toggle form-control" data-toggle="dropdown" id="project_name" placeholder="项目" @if($project == '') value="不限" @elseif($project == 'yundou') value="芸豆会计" @elseif($project == 'xiaodou') value="小豆会计" @elseif($project == 'law') value="律师版" @endif readonly/> <input type="hidden" name='project' id='project' value='{{$project}}'/> <ul class="dropdown-menu" role="menu" id="project_list"> <li data-id=''><a href="javascript:void(0)">不限</a></li> <li data-id='yundou'><a href="javascript:void(0)">芸豆会计</a></li> <li data-id='xiaodou'><a href="javascript:void(0)">小豆会计</a></li> <li data-id='law'><a href="javascript:void(0)">律师版</a></li> </ul> </div> </span>
技术点说明:
1.延时搜索:
当输入框发生变化需要即时发送ajax调用api时,会严重浪费服务器资源。处理方案是输入完成几秒后再向服务端发送请求。
last = event.timeStamp; setTimeout(function () { if (last - event.timeStamp == 0) { //这里发送请求 } }, 1000);
2.下拉依赖bootstrap
元素中添加:
data-toggle="dropdown"
3.快速绑定下拉:
bindSelectOption('project');4.快速绑定下拉搜索
bindSearchOption('project');
相关文章推荐
- 基于JS快速实现导航下拉菜单动画效果附源码下载
- JS实现快速的导航下拉菜单动画效果附源码下载
- 快速上手,使用 JS 配合XML-RPC(JSP)实现AJAX类型应用
- js表单快速取值/赋值 快速生成下拉框
- Jq和JS实现下拉列表左右选择(时间)
- JS+CSS实现下拉列表框美化效果(3款)
- 原生js实现下拉到底事件(2)-解决为什么ie下的onscroll事件轮滚过快就执行了2次呢?
- JS实现关键字搜索下拉字段
- 用js+jsp实现在同一个下拉列表中,动态生成多级select选项
- JS实现关键字搜索时的相关下拉字段效果
- JS实现快速排序
- 常见js实现功能单选框、复选框、通过div模拟下拉列表框...
- JS获取下拉列表所选中的TEXT和Value的实现代码
- js原声快速实现选项卡
- JS实现模糊查询带下拉匹配效果
- js实现下拉框三级级联
- 基于js实现二级下拉联动
- JS实现下拉列表中的联动(根据所选的text的值,改变另外一个下拉列表中国的值(text))
- js实现选中下拉框选项变换背景颜色
- 原生js实现对select下拉列表的内容过滤