[原创]JQuery的autoCompleate插件的使用(内含解决Jquery事件与UpdatePanel互斥的问题,只需要在body中改为如下:<body onload=’load()’></body>即可)
1、引用基础js包
<script src="../js/jquery.min.js" type="text/javascript" language="javascript"></script> <script src="../js/jquery.autocomplete.pack.js" type="text/javascript"></script> <script src="../js/jquery.ajaxQueue.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="../styles/jquery.autocomplete.css" /> <script type="text/javascript" src="../js/jquery.bgiframe.js"></script>2、使用方法:
<script type="text/javascript">
function log(event, data, formatted) {
$("<li>").html( !data ? "No match!" : "Selected: " + formatted).appendTo("#result");
}
function formatItem(row) {
return row[0] + " (<strong>id: " + row[1] + "</strong>)";
}
function formatResult(row) {
return row[0].replace(/(<.+?>)/gi, '');
}
//解决 jquery 与 updatepanel 不能共存的方法 start
function load() {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
function EndRequestHandler() {
//updatePanel每次回调完成后会调用该参数,如果有需要在updatepanel内放置jquery的代码这里边也需要调用一份。
//重新注册jquery
//selectJLX();
//selectXZ();
}
//解决 jquery 与 updatepanel 不能共存的方法 end
function format(mail) {
return mail.id + " <" + mail.name + ">";
}
//选择街路巷
function selectJLX()
{
$("#txtViliage").autocomplete("../Handler.ashx", {
multiple: false,
minChars:0,
dataType: "json",
//autoFill:true,
//mustMatch:true,
extraParams:{"q":'2'},
matchContains: true,
parse: function(data) {
return $.map(eval(data), function(row) {
return {
data: row,
value: row.name ,
result: row.name
}
});},
formatMatch: function(data) {
return data.name;
},
formatItem: function(item) {
return item.name ;
}
}).result(function(e, item) { //alert(item.id);
});
}
$(document).ready(function(){
selectJLX();
});
</script>
3、其中Handler.ashx返回一组json数据源码如下:
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data;
public class Handler : IHttpHandler
{
public void ProcessRequest( HttpContext context )
{
context.Response.ContentType = "application/json";
if (context.Request.QueryString["q"] == "1")
{
context.Response.Write( "[{\"id\":\"aaa\",\"name\":\"ccc\"}]" );
}
else
{
Database database = DatabaseFactory.CreateDatabase( "ConnectionStringCur" );
System.Text.StringBuilder sb = new System.Text.StringBuilder();
string sql = AppConfig.GetAppSettingValues( "roadSql" );
if (!string.IsNullOrEmpty( sql ))
{
sb.Append( "[" );
using (System.Data.Common.DbCommand cmd = database.GetSqlStringCommand( sql ))
{
using (IDataReader idr = database.ExecuteReader( cmd ))
{
while (idr.Read())
{
sb.Append( "{" ).AppendFormat( "\"id\":\"{0}\",\"name\":\"{1}\"", Convert.ToString( idr[0] ), Convert.ToString( idr[1] ) ).Append( "}," );
}
}
}
if (sb.ToString().EndsWith( "," ))
{
sb.Remove( sb.Length - 1, 1 );
}
sb.Append( "]" );
}
context.Response.Write( sb.ToString() );
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
autoCompleated官方插件下载,大家有兴趣的可以研究一下

浙公网安备 33010602011771号