JQuery实现文本框自动匹——请高人帮我看看

liujin9012 2012-05-21 11:57:50
JQuery监听textbox的keyup事件
 $(document).ready(function()
{
$("#txt_Keys").keyup(function()
{
var proname=$("#txt_Keys").val();
if(proname.length!=0)
{alert(proname);
$("autodiv").attr("style","display:block");
$.ajax(
{
type:"GET",
url:"Handler.ashx",
data:"keyword"+proname,
success:function(data)
{
if(data!="")
{
<!--写到这里有点迷糊了,不知道该干啥了~-->
}
}
})
}
})
});
其中Handler.ashx代码如下:
public void ProcessRequest (HttpContext context) 
{
context.Response.ClearContent();
context.Response.ContentType = "text/plain";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);

string proName="";
proName = context.Request["keyword"];
string sql = "select Top 10 Project_Name from UDP_Project where Project_Name like '" + proName + "'";
DataSet ds = SQLHelper.theSearch(sql);
ArrayList list = new ArrayList();

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
list.Add(ds.Tables[0].Rows[i].ToString().Trim());
}
System.Threading.Thread.Sleep(1000);
context.Response.Write(list);
context.Response.End();
}
,麻烦帮我看看,有没有写错了,做了几天了~~
...全文
234 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujin9012 2012-05-23
  • 打赏
  • 举报
回复
我把全整代码贴出来吧。供后人参考~
JQuery代码如下:
    <script type="text/javascript">
$(document).ready(function()
{
//使div隐藏
$("#autodiv").attr("style","display:none");
// var p=$("#txt_Keys");
// var position=p.position();
// $("#autodiv").html("left:"+position.left+",top:"+position.top);
$("#txt_Keys").keyup(function()
{
var proname=$("#txt_Keys").val();
var s="";
if(proname.length!=0)
{
//$("#autodiv").attr("style","display:none");
$.ajax(
{
type:"GET",
url:"Handler.ashx",
data:"keyword="+proname,//后台接收proname的关键
success:function(data)
{
if(data!="")
{
data=eval('('+data+')');
//json串输出
$.each(data,function(i,v)
{
$.each(v,function(k,val)
{
//alert(val.proName);
s+="<table><tr><td width=\"152px\" left=\"0\">"+val.proName+"</td></tr></table>";
$("#autodiv").attr("style","display:block");
document.getElementById("autodiv").innerHTML=s;
})
})
$("#autodiv td").click(function(e)
{
$("#txt_Keys").val($(this).text());
$("#autodiv").attr("style","display:none");
//$("#autodiv").fadeOut('slow');
})
$("#autodiv td").mouseover(function(e)
{
$(this).css("background","#B3CFFC");
$(this).css("cursor","hand")
})
$("#autodiv td").mouseout(function(e)
{
$(this).css("background","");
})
}
}
})
}
})

});
</script>

其中Handler.ashx如下,我用的VS2005这个文件VS版本不同可能有点小区别:

public class Handler : IHttpHandler
{
string proName = "";
public void ProcessRequest (HttpContext context)
{
context.Response.ClearContent();
context.Response.ContentType = "text/plain";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);


proName = context.Request["keyword"];
string sql = "select Top 10 Project_Name from UDP_Project where Project_Name like '%" + proName + "%' or Project_Yjdw like '%"+proName+"%' or Project_Yjr like '%"+proName+"%'";//写上自己的SQL
DataSet ds = SQLHelper.theSearch(sql);//这个应该能看懂吧。返回的是DataSet
string json = "";
json = this.DataTableToJSON(ds.Tables[0]);
context.Response.Write(json);
context.Response.End();
}
//public string ToJSON(string item)
//{
// // TODO: ToJSON 实现
// string json = string.Empty;
// return "{"+string.Format("\"proName\":\"{0}\"",item)+"}";
//}

public string DataTableToJSON(DataTable dt)
{
//DataTable转换成JSON
if (dt != null && dt.Rows.Count > 0)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{");
jsonBuilder.Append("\"proNames\":");
jsonBuilder.Append("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
jsonBuilder.Append("\"");
jsonBuilder.Append("proName");
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][0].ToString());
jsonBuilder.Append("\",");
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
else
{
return "{\"proName\":\"\"}";
}
}

CSS的话根据自己需求去写吧~
<input id="txt_Keys" type="text"/>
<div id="autodiv"></div>
liujin9012 2012-05-23
  • 打赏
  • 举报
回复
嗯,谢谢各位,功能实现了。还是用的JSON。
liujin9012 2012-05-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

$("autodiv").attr("style","display:block"); 你这里一切正常? 貌似楼主$("autodiv")这个写错了
[/Quote]额,是的。少了个#号~
虎虎0369 2012-05-22
  • 打赏
  • 举报
回复
你后台直接输出list...可以么? 给你个思路应该是将数据用一个逗号或者别的符号分割够输出 在前台在split 或者输出json数据。
xb12369 2012-05-22
  • 打赏
  • 举报
回复
模仿下拉菜单,以前有写过,现在不会
yangchun1213 2012-05-22
  • 打赏
  • 举报
回复
解决木有?解决了就分享一下,分享万岁~~~~
moonwrite 2012-05-21
  • 打赏
  • 举报
回复
google一下:jQuery 自动匹配
001007009 2012-05-21
  • 打赏
  • 举报
回复
if(data!=""){
//根据你自己的需要写codea
}


后台返回的值 需要是 js能识别的变量类型
比如
context.Response.Write("{\"name\": \"Tom\"}");


success:function(data){
data = eval('('+data+')');
alert( data.name )
}

这样就可以了


虎虎0369 2012-05-21
  • 打赏
  • 举报
回复
$("autodiv").attr("style","display:block"); 你这里一切正常? 貌似楼主$("autodiv")这个写错了
evelyn_green 2012-05-21
  • 打赏
  • 举报
回复
一本jquery文档就可以帮助你实现自己看了
tptptp00 2012-05-21
  • 打赏
  • 举报
回复
你在那里面把数据填充到autodiv里面不就可以了 另外不要用线程 在进入时间的时候卸载掉事件 ajax请求完成或失败在绑定事件
遊戲王千金 2012-05-21
  • 打赏
  • 举报
回复
先自行搜索jquery.autocomplete插件
下载后它包括jquery.autocomplete.js,jquery.autocomplete.css, jquery-latest.js
调用方式

<script type="text/javascript" language="javascript">
$(document).ready(function() {
$.ajax({
type: "get",
contentType: "application/json",
url: "returndata.aspx",
success: function(data) {
var data = eval("(" + data + ")");
$("#txtIMO").autocomplete(data, {
minChars: 1,
matchContains: true,
autoFill: false,
mustMatch: false, //是否完全匹配
width: 80, //宽度
formatItem: function(row, i, max) {
return row.IMO;
},
formatMatch: function(row, i, max) {
return row.IMO;
},
formatResult: function(row) {
return row.IMO;
}
});
}
})
})
</script>

关键的代码

JavaScriptSerializer j = new JavaScriptSerializer();
json = j.Serialize(list);
Response.Write(json);
Response.End();


yangchun1213 2012-05-21
  • 打赏
  • 举报
回复
这个东东俺也木有弄出来,顶~~~
liujin9012 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 3 楼 的回复:
引用 1 楼 calmcrime 的回复:
if(data!=""){
//根据你自己的需要写codea
}


后台返回的值 需要是 js能识别的变量类型
比如
context.Response.Write("{\"name\": \"Tom\"}");


success:function(data){
data = eval('('+data……
[/Quote]嗯,刚看看一会JSON的知识,刚准备试下~
银狐被占用 2012-05-21
  • 打赏
  • 举报
回复
http://blog.csdn.net/baby97/article/details/4270233

仿谷歌下拉提示
001007009 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 calmcrime 的回复:
if(data!=""){
//根据你自己的需要写codea
}


后台返回的值 需要是 js能识别的变量类型
比如
context.Response.Write("{\"name\": \"Tom\"}");


success:function(data){
data = eval('('+data+')');
alert……
[/Quote]


自己根据格式来拼接就可以了。
liujin9012 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
System.Threading.Thread.Sleep(1000);

这句话是为了些神马???
[/Quote]不为什么,不让数据变动的太快~
lqkankan 2012-05-21
  • 打赏
  • 举报
回复
System.Threading.Thread.Sleep(1000);

这句话是为了些神马???
liujin9012 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 calmcrime 的回复:]
if(data!=""){
//根据你自己的需要写codea
}


后台返回的值 需要是 js能识别的变量类型
比如
context.Response.Write("{\"name\": \"Tom\"}");


success:function(data){
data = eval('('+data+')');
alert( data.name )
}

这样就……
[/Quote]ArrayList list = new ArrayList();
我需要将这么多个字符串都返回。该怎么办呢。ArrayList好像JS识别不了~

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧