點選文字框彈出可檢索下拉選單程式碼例項
本章節分享一段程式碼例項,他實現了點選文字框彈出下拉選單效果。
並且此下拉選單可以進行檢索,這是一種比較人性化的應用。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> * { padding: 0; margin: 0; } .box { width: 280px; margin: 50px auto; font-family: microsoft yahei; font-size: 14px; } .text-input { position: relative; } .text-input .search { border: 1px solid #d9d9d9; width: 95%; line-height: 28px; cursor: pointer; font-style: normal; display: inline-block; height: 28px; color: #909090; padding-left: 5%; } .text-input .search:hover { border: 1px solid #19ac9e; } .text-input i { position: absolute; top: 6px; right: 3px; } .text-input i.down { display: block; width: 17px; height: 16px; } .text-input i.up { display: block; width: 17px; height: 16px; } .text-input .search b { font-weight: normal; } .search-text-hide { position: absolute; top: 31px; left: 0; width: 100%; background-color: #fff; border: 1px solid #d9d9d9; box-shadow: 0 0 4px rgba(0,0,0,.17); border-radius: 3px; box-sizing: border-box; z-index: 1070; outline: none; overflow: hidden; font-size: 12px; display: none; } .hide-input { padding: 6px; display: block; } .hide-input input { border: 1px solid #d9d9d9; width: 100%; height: 24px !important; padding: 4px 7px; box-sizing: border-box; border-radius: 4px !important; outline: none; } .no-list-warn { color: #ccc; padding: 4px 4px 4px 16px; } .search-text-hide ul { outline: none; margin: 0; padding-left: 0; list-style: none; max-height: 200px; overflow: auto; } .search-text-hide ul li { position: relative; display: block; padding: 4px 33px 4px 16px; font-weight: 400; color: #666; white-space: nowrap; cursor: pointer; overflow: hidden; } .search-text-hide ul li:hover, .search-text-hide ul li.active { background: #e8f7f5; } .no-list-warn { display: none; } </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script> $(function() { var arr = ['div教程', 'css教程', 'js教程', 'json教程', 'softwhy.com']; $(".search").on('click', function (e) { e.stopPropagation(); if ($(this).find("i").hasClass('down')) { $(".search-text-hide").css("display", "block"); $(this).find("i").addClass('up').removeClass('down'); var tInput = $(".search-text-hide").find("input"); tInput.focus(); tInput.val(""); var sibLi = $(".search-text-hide .temList li"); var _this = $(this); $("body").on('click', sibLi, function(event) { event.preventDefault(); if (event.target.tagName == "LI") { $(".search").find("i").attr("data-text", $(event.target).attr("data-text")); $(".search").find("b").text($(event.target).text()); $(".search-text-hide").hide(); _this.find("i").addClass('down').removeClass('up'); } }); } else { $(".search-text-hide").css("display", "none"); $(this).find("i").addClass('down').removeClass('up'); } var ul_html = ''; for (var i = 0; i < arr.length; i++) { ul_html += '<li data-text="' + arr[i] + '">' + arr[i] + '</li>'; } $(".temList").html(ul_html); }); //input $(".search-text-hide input[type='text']").on("keyup", function(e) { if (e.which != 38 && e.which != 40 && e.which != 13) { var liList = $(".temList li"); var text = $.trim($(this).val()); var _html = ''; $.each(arr, function(index, val) { if (val.indexOf(text) != -1) { _html += '<li data-text="' + index + '">' + arr[index] + '</li>'; } }); if (_html == '') { $('.search-text-hide span.no-list-warn').show(); $(".search-text-hide ul").html(''); } else { $('.search-text-hide span.no-list-warn').hide(); $(".search-text-hide ul").empty().html(_html); } } }); $(document).keydown(function(e) { var activeLi = $('.search-text-hide ul li.active'); var firstLi = $('.search-text-hide ul li:first'); var lastLi = $('.search-text-hide ul li:last'); if (e.which == 38 || e.which == 40) { if (activeLi.length == 0) { firstLi.addClass('active'); } else if (e.which == 38) { if (activeLi.index() == 0) { lastLi.addClass('active').siblings().removeClass('active'); } else { activeLi.removeClass('active').prev().addClass('active'); } } else if (e.which == 40) { if (activeLi.index() == $('.search-text-hide ul li').length - 1) { firstLi.addClass('active').siblings().removeClass('active'); } else { activeLi.removeClass('active').next().addClass('active'); } } } else if (e.which == 13) { $(".text-input em i").attr("data-text", activeLi.attr("data-text")); $(".text-input em b").text(activeLi.text()); $(".search-text-hide").hide(); $(".text-input em").find('i').addClass('down').removeClass('up'); } }); }); </script> </head> <body> <div class="box"> <div class="text-input"> <em class="search"> <b>搜尋</b> <i class="down"></i> </em> <div class="search-text-hide" data-index="0"> <span class="hide-input"> <input type="text" class="nav-search-input searchTagsModal" value=""> </span> <span class="no-list-warn">沒有指定內容</span> <ul class="temList"></ul> </div> </div> </div> </body> </html>
相關文章
- 點選文字框彈出可供選擇的checkbox核取方塊程式碼例項
- 文字框點選清除預設文字例項程式碼
- js點選文字框選中文字效果程式碼例項JS
- 點選按鈕複製文字框文字程式碼例項
- 點選連結a彈出一個確認框例項程式碼
- jQuery點選文字框清除內容程式碼例項jQuery
- 點選彈出鎖屏層例項程式碼
- 點選彈出半透明層程式碼例項
- 點選文字框下拉彈出日曆控制元件程式碼控制元件
- javascript實現的點選彈出刪除提示框程式碼例項JavaScript
- 點選頂部彈出提示層程式碼例項
- jQuery點選顯示彈出層例項程式碼jQuery
- css二級下拉選單程式碼例項CSS
- select下拉選單美化程式碼例項
- 選中文字框文字觸發事件程式碼例項事件
- 點選方向鍵實現文字框焦點切換程式碼例項
- 禁用文字選擇、右鍵選單例項程式碼單例
- JavaScript帶下拉選單的文字框JavaScript
- 滑鼠懸浮出現下拉選單程式碼例項
- jQuery美化select下拉選單程式碼例項jQuery
- css水平下拉導航選單程式碼例項CSS
- jQuery操作select下拉選單程式碼例項jQuery
- 模擬select下拉選單程式碼例項
- Android實現三級聯動下拉框 下拉選單spinner的例項程式碼Android
- JavaScript 點選複製選中文字程式碼例項JavaScript
- select下拉選單項互換效果程式碼例項
- javascript刪除select下拉選單項程式碼例項JavaScript
- 點選連結<a>彈出確認視窗程式碼例項
- 移動端點選彈出提示視窗程式碼例項
- 原生javascript操作select下拉選單程式碼例項JavaScript
- select下拉選單級聯效果例項程式碼
- select級聯下拉選單程式碼例項分析
- css三級下拉導航選單程式碼例項CSS
- 模擬美化select下拉選單程式碼例項
- 將選中的下拉選單值寫入文字框
- 下拉選單框select常用點
- 短視訊系統原始碼,點選選擇框,底部彈出可以選擇的選項原始碼
- 直播系統程式碼,點選選擇欄,彈出各個選項