JQuery下拉框模糊查询

  • 格式:docx
  • 大小:19.92 KB
  • 文档页数:6

2012-04-10 14:24C#+jQuery+div实现下拉框信息提示模糊搜索结果(百度、google搜索提示框)实现效果:用户输入查询字符串,当文本框内容变化时,显示下拉框为用户提示完整信息,并可以实现选中所查信息后获得对应ID而进行更进一步的关联显示。

(比如搜某一公司,选中公司后在根据公司ID获得公司产品)。

推荐jQuery Autocomplete 插件:(演示地址)http://jquery.bassistance.de/autocomplete/demo/?主人博客:http://bassistance.de/ (还有好多有用的Plugins)手动实现:在输入框所在的页面:引入jquery开发包:样式及脚本<script src="../../css/jquery-1.7.1.min.js"type="text/javascript"></script><style type="text/css" media="screen">body{font: 11px arial;}.suggest_link_alt{background-color: #FFFFFF;text-align:right;cursor:hand;padding: 2px 6px 2px 6px;z-index:101;}.suggest_link{background-color: #FFFFFF;padding: 2px 6px 2px 6px;z-index:101;}.suggest_link_over{background-color: #E8F2FE;padding: 2px 6px 2px 6px;z-index:101;}#search_suggest{z-index:100;position: absolute; background-color: #FFFFFF; text-align: left;border: 1px solid #000000; }#search_suggestR{z-index:100;position: absolute; background-color: #FFFFFF; text-align: left;border: 1px solid #000000; }/*input*/.input_on{margin:2px 8px 0pt 10px; height:18px;border:1px solid #999; background-color:#FFFFCC; }.input_off{margin:2px 8px 0pt 10px; height:18px;border:1px solid #CCC; background-color:#FFF;}.input_move{margin:2px 8px 0pt 10px; height:18px;border:1px solid #999; background-color:#FFFFCC; }.input_out{/*height:16px;默认高度*/ margin:2px 8px 0pt 10px; height:18px;border:1px solid #CCC; background-color:#FFF;}</style><script language="javascript" type="text/javascript">function DivSetVisible(divid, frameid, state) {varDivRef = document.getElementById(divid);varIfrRef = document.getElementById(frameid);if (state) {DivRef.style.display = "block";IfrRef.style.width = DivRef.offsetWidth;IfrRef.style.height = DivRef.offsetHeight;IfrRef.style.top = DivRef.style.top;IfrRef.style.left = DivRef.style.left;IfrRef.style.zIndex = DivRef.style.zIndex - 1;IfrRef.style.display = "block";}else {DivRef.style.display = "none";IfrRef.style.display = "none";}}</script><script language="javascript" type="text/javascript">//当输入框的内容变化时,调用该函数function searchSuggest() {if ($("#txtSearch").val() != "" && $("#txtSearch").val()!=null) {$.ajax({type: "GET",url: "../../AJAX.aspx",data: "type=searchCompany&searchText=" + escape($("#txtSearch").val()), success: function(result) {varsourceText = result.split("**");if (sourceText.length> 1) {DivSetVisible("search_suggest", "DivShim", true);//$("#search_suggest").show();$("#search_suggest").html("");for (vari = 0; i<sourceText.length - 1; i++) {var s = ' <div onmouseover="javascript:suggestOver(this);"';s += ' onmouseout= "javascript:suggestOut(this);" ';s += ' onclick= "javascript:setSearch(this.innerHTML,this.id);" ';s += ' class= "suggest_link" id="' + sourceText[i].split(",")[0] + '">' + sourceText[i].split(",")[1] + '</div>';$("#search_suggest").html($("#search_suggest").html() + s);}$("#search_suggest").html($("#search_suggest").html() + "<div class= \"suggest_link_alt\"onclick=\"javascript:DivSetVisible('search_suggest', 'DivShim', false);\">关闭提示</div>");}else {DivSetVisible("search_suggest", "DivShim", false);//$("#search_suggest").hide();}}});}else {DivSetVisible("search_suggest", "DivShim", false);//$("#search_suggest").hide();}}functionsuggestOver(div_value) {div_value.className = "suggest_link_over";}functionsuggestOut(div_value) {div_value.className = "suggest_link";}function setSearch(obj,id) {$("#txtSearch").val(obj);$("#hidCompId").val(id);$.ajax({type: "GET",url: "../../AJAX.aspx",data: "type=getCompanyJob&companyId=" + id,success: function(result) {$("#drpPost").empty();varsourceText = result.split("**");if (sourceText.length> 1) {for (vari = 0; i<sourceText.length - 1; i++) {$("<option value='" + sourceText[i].split(",")[0] + "'>" + sourceText[i].split(",")[1]+ "</option>").appendTo("#drpPost")}}});$("#search_suggest").html("");DivSetVisible("search_suggest", "DivShim", false);//$("#search_suggest").hide();}</script>HTML:<input type="text" id="txtSearch" name="txtSearch"onchange="searchSuggest();" size="50" class="input_out input"onfocus="this.className='input_on';this.onmouseout=''"onblur="this.className='input_off';this.onmouseout=function(){this.cl assName='input_out'};" onmousemove="this.className='input_move'" onmouseout="this.className='input_out'" /><br /><div id="search_suggest" style="display:none; z-index:100;"></div><iframe id="DivShim" src="javascript:false;" scrolling="no" frameborder="0" style="position:absolute; top:0px; left:0px; display:none;"></iframe><input type="hidden" id="hidCompId" />AJAX.aspx实现:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AJAX.aspx.cs" Inherits="AJAX" %>AJAX.aspx.cs:stringsearchText = Request["searchText"];StringBuilder result = new StringBuilder(100);if (!string.IsNullOrEmpty(searchText)){SqlDataReaderdr = null;try{dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.Text,"select top 20 Identifier,Company from UserInfo where company like '%'+@keywords+'%'",new SqlParameter("@keywords", searchText));while (dr.Read())result.Append(dr[0].ToString() + "," + dr[1].ToString() + "**"); }}catch{}finally{if (dr != null && !dr.IsClosed){dr.Close();dr.Dispose();}}}Response.Write(result.ToString());。