Jquery 自動完成控制元件
/* * jQuery AutoComplete * * Author: cntlis * http://blog.csdn.net/cntlis * * Licensed like jQuery, see http://docs.jquery.com/License * * 作者:cntlis * QQ:8112857 */ $.fn.AutoComplete = function(url,option){ var me= this; var strKey= $(me).val(); var strKeyBak= ""; var isShow = false; var doption={ iwidth: '0px', //下拉框的寬度 iLengthLower: 1, //當表單的長度大於iLengthLower小於iLengthUpper時才開始執行搜尋 iLengthUpper: 50, strPara: "Keyword", //變數名稱 zIndex: 1, //提示框的Z-INDEX值 hasscroll: 0, //是否出現滾動條0無1有 hasclose: 1, //是否擁有關閉視窗 desfun:function(){} }; $.extend(doption,option); var iLengthLower= doption.iLengthLower; var iLengthUpper= doption.iLengthUpper; var strPara= doption.strPara; if ($("#autocomplete").length<1){$("body").append("<div id='autocomplete' class='autocompletefloor'></div>");} $("#autocomplete").hide(); $(me).keyup(function(e){keysearch(e.keyCode);}); $(me).keydown(function(e){LineSelect(e.keyCode);}); $(me).bind("blur",function(){ strKeyBak= $("#autocomplete ul .selected .keyname").text(); //為click事件增加處理 if (strKeyBak.length>0 && strKeyBak!=$(me).val()){ $(me).val(strKeyBak); doption.desfun(); }; floorHide(); }); var encode=function(v){//如果包含中文就escape,避免重複escape) return escape(v).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F'); } function floorHide(){ $("#autocomplete").hide().html(""); strKey= ""; isShow = false; } function floorShow(){ var p= $(me).offset(); var w= (doption.iwidth == "0px") ? $(me).width()+2 : doption.iwidth; $("#autocomplete").css({ 'z-index:':doption.zIndex, width:w, top:parseInt(p.top+$(me).outerHeight())+"px", left:parseInt(p.left)+"px" }).show(); strKey= ""; isShow = true; } function keysearch(code){ var strKeyNow=$(me).val(); if(code == 38 || code == 40 || code == 13 || code == 27 || code == 9) return; //TAB/回車、ESC、向上、向下 if((strKey == "" || strKeyNow != strKey) && strKeyNow.length >= iLengthLower && strKeyNow.length <= iLengthUpper){ $.ajax({ type: "Get", dataType: "json", url: url, data: strPara != "" ? strPara + "=" + encode(strKeyNow) : "", success: function(json){ json=json.keylist; if (json.length>0){ //獲取搜尋資料 var strContent= "<ul>"; $.each(json, function(i, n){ if(n.keyname.length>0){ //如果 //alert(n.keyname); strContent+= '<li class="keyinfo"><span class="keyname">'+n.keyname+'</span>'; try{ if (n.keyextend.length>0){strContent+='<span class="keyextend">'+n.keyextend+'</span>';} }catch(E){}; strContent+= '</li>'; }; }); if (doption.hasclose==1){ strContent+= '<li class="close"><span>關閉</span></li>'; } strContent+='</ul>'; $("#autocomplete").html(strContent); $("#autocomplete .keyinfo").mouseover(function(){$("#autocomplete .selected").removeClass("selected");$(this).removeClass("unselected").addClass("selected");}).mouseout(function(){$(this).removeClass("selected").addClass("unselected");}).click(function(){if(strKeyBak.length()>0){$(me).val(strKeyBak);}}); floorShow(); }else{ //沒有搜尋資料 floorHide(); return; } } }); strKey=$(me).val(); } if(strKey.length == 0 || strKey.length <= iLengthLower || strKey.length >= iLengthUpper) floorHide(); } function LineSelect(code){ if(code == 27){floorHide();};//Enter鍵、ESC鍵 if(code == 13){floorHide();doption.desfun();}; if(!isShow) return; ObjSelected=$("#autocomplete ul .selected"); if (ObjSelected.length>0){ //如果已經有選定 //alert('dasfdas'); if(code == 38){ //向上鍵 if(ObjSelected.prev().text() != ""){ //如果不是第一個資料 ObjSelected.removeClass("selected").addClass("unselected").prev().removeClass("unselected").addClass("selected"); $(me).val($("#autocomplete ul .selected .keyname").text()); }else{ ObjSelected.removeClass("selected").addClass("unselected"); $("#autocomplete .keyinfo:last").removeClass("unselected").addClass("selected"); $(me).val($("#autocomplete ul .selected .keyname").text()); } }else if (code == 40){ //向下鍵 if(ObjSelected.next().text() != ""){ //如果不是第一個資料 ObjSelected.removeClass("selected").addClass("unselected").next().removeClass("unselected").addClass("selected"); $(me).val($("#autocomplete ul .selected .keyname").text()); }else{ ObjSelected.removeClass("selected").addClass("unselected"); $("#autocomplete .keyinfo:first").removeClass("unselected").addClass("selected"); $(me).val($("#autocomplete ul .selected .keyname").text()); } } }else if(code == 38){ $("#autocomplete .keyinfo:last").removeClass("unselected").addClass("selected"); $(me).val($("#autocomplete .keyinfo:last .keyname").text()); }else if(code == 40){ $("#autocomplete .keyinfo:first").removeClass("unselected").addClass("selected"); $(me).val($("#autocomplete .keyinfo:first .keyname").text()); } } }
以上為complete.js
新增引用
<script src="../js/jquery-latest.js" type="text/javascript"></script>
<script src="../js/complete.js" type="text/javascript"></script>
新增樣式
*
{
margin: 0px;
padding: 0px;
}
#autocomplete
{
border: 1px solid #000;
position: absolute;
background-color: #fff;
}
/*每行的格式*/#autocomplete li
{
display: block;
text-align: left;
height: 20px;
line-height: 20px;
background-color: #fff;
cursor: default;
padding: 0 5px;
clear: both;
}
/*滑鼠選中時的格式*/#autocomplete .selected
{
background-color: #565da9;
color: #fff;
overflow: hidden;
}
/*滑鼠離開時代格式*/#autocomplete .unselected
{
background-color: #fff;
color: #666;
}
/*關鍵字資訊*/#autocomplete .keyname
{
display: block;
float: left;
}
/*關鍵字擴充套件資訊*/#autocomplete .keyextend
{
display: block;
float: right;
color: green;
}
#autocomplete .unselected .keyextend
{
color: green;
}
#autocomplete .selected .keyextend
{
color: #fff;
}
/*關閉*/#autocomplete .close
{
text-align: right;
}
#autocomplete .close span
{
color: blue;
cursor: pointer;
text-decoration: underline;
}
使用
$("#<%=txtsupplierId.ClientID %>").AutoComplete("AddApplication.ashx?key=" + $("#<%=txtsupplierId.ClientID %>").val() + "&action=supplier", "");
後臺程式碼
private void AutoAddSuplier(string keyWords) { Response.Write("{'keylist':["); for (int i = 0; i < 10; i++) { Response.Write("{'keyname':'" + keyWords + i + "','keyextend':''},"); } Response.Write("{'keyname':'" + keyWords + "10'}]}"); }
相關文章
- jQuery實現使用者輸入自動完成功能jQuery
- jquery 自動補全jQuery
- 使用者模型自動完成模型
- html5 datalist自動完成HTML
- ThinkPHP3.2.3 欄位對映/自動驗證/自動完成PHP
- 修改eclipse的自動完成功能Eclipse
- 按enter時,控制元件焦點自動移動控制元件
- Excel匯出 並完成後自動開啟Excel
- sweetalert載入彈窗完成自動關閉
- jquery ui autocomplete輸入中文不自動完成的問題jQueryUI
- Masonry佈局控制元件,自動換行控制元件
- Vb中控制元件的自動排列 (轉)控制元件
- Activiti5.2 自動完成第一節點流程
- 用Linux完成Oracle自動物理備份(轉)LinuxOracle
- 自動化測試之控制元件點選控制元件
- jQuery找到GridView控制元件jQueryView控制元件
- 下拉控制元件jQuery外掛控制元件jQuery
- jQuery給控制元件賦值....jQuery控制元件賦值
- App自動化測試:高階控制元件互動技巧APP控制元件
- jquery智慧彈出層,自動判斷位置jQuery
- jquery Banner 圖片自動輪換顯示jQuery
- 我怎樣用Node.js自動完成工作的Node.js
- 如何用 tep 完成增刪改查介面自動化
- 如何用tep完成增刪改查介面自動化
- 蘋果電腦Mac英文打字自動提示完成外掛蘋果Mac
- 【WPF】自動完成/智慧提示的文字框(AutoCompleteBox)
- MonoDevelop 3.0 大幅改進 C# 程式碼自動完成MonodevC#
- 用Linux命令完成Oracle自動物理備份(轉)LinuxOracle
- 使用jQuery 完成ajax 檔案下載jQuery
- 自動化測試畫布控制元件找不到控制元件
- Android UI控制元件系列:AutoCompleteTextView(自動提示)AndroidUI控制元件TextView
- jQuery 郵箱輸入字尾自動補全jQuery
- jquery 實現郵箱輸入自動提示功能jQuery
- ABAP Development Tool如何配置程式碼自動完成的快捷鍵dev
- 怎樣在 PhpStorm 啟用 Laravel Resources 的自動完成PHPORMLaravel
- 關閉webkit瀏覽器的自動完成,修正,大寫WebKit瀏覽器
- At.js – 用於 Web 應用程式的自動完成庫JSWeb
- 自動駕駛將完成最後的拼圖 或將立法自動駕駛