JS快速实现下拉及下拉搜索

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//绑定下拉
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代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
< 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时,会严重浪费服务器资源。处理方案是输入完成几秒后再向服务端发送请求。

1
2
3
4
5
6
last = event.timeStamp;
      setTimeout( function  () {
      if  (last - event.timeStamp == 0) {
         //这里发送请求          
         }
      }, 1000);



2.下拉依赖bootstrap

元素中添加:

1
data-toggle="dropdown"


3.快速绑定下拉:

1
bindSelectOption('project');

4.快速绑定下拉搜索

1
bindSearchOption('project');









本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/2067328,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
前端开发 JavaScript
百度搜索:蓝易云【用JavaScript和HTML实现一个精美的计算器网页】
该计算器网页使用HTML定义了页面结构,CSS样式使其具有精美的外观,而JavaScript脚本实现了计算器的逻辑。用户可以通过按钮输入数字和操作符,并通过“=”按钮来进行计算,计算结果会显示在文本框中。
84 6
|
7月前
|
JavaScript 前端开发
js中模糊搜索 模糊匹配如何实现?
js中模糊搜索 模糊匹配如何实现?
|
6月前
|
JavaScript 前端开发
JS如何配合input框实现模糊搜索
JS如何配合input框实现模糊搜索
181 2
|
2月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
4月前
|
JavaScript 数据安全/隐私保护 Python
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
286 4
|
4月前
|
JavaScript 前端开发 安全
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
137 0
|
5月前
|
数据采集 算法 JavaScript
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
JavaScript字符串搜索涵盖`indexOf`、`includes`及KMP算法。`indexOf`返回子字符串位置,`includes`检查是否包含子字符串。KMP是高效的搜索算法,尤其适合长模式匹配。示例展示了如何在数据采集(如网页爬虫)中使用这些方法,结合代理IP进行安全搜索。代码示例中,搜索百度新闻结果并检测是否含有特定字符串。学习这些技术能提升编程效率和性能。
141 1
揭开JavaScript字符串搜索的秘密:indexOf、includes与KMP算法
|
4月前
|
前端开发 JavaScript 开发者
fuse.js前端搜索简单使用的三个案例
通过这三个例子可以看出,Fuse.js 是一个功能丰富、易于实现的前端搜索库。它使开发者能够便捷地实现从基础到高级的搜索功能,无论是简单的列表搜索还是实时的搜索建议,都能够高效、精确地提供给用户所需的信息。
240 0
|
4月前
|
JavaScript
js分页+搜索
js分页+搜索
49 0
|
6月前
|
JavaScript 前端开发
JS实现select框实现模糊搜索
JS实现select框实现模糊搜索