求 百度智能提示框原理
百度的智能提示大家已经知道了,但是我不太懂他的原理。现在有一个想法:
我在文本框里输入了文字,把百度的智能提示框里提示的内容全都显示出来。
ag:我输入了新闻,把下拉框里“新闻网、新闻联播。。”等值全部保存起来怎么做。
[解决办法]
学习一下prototype那个框架和jQuery差不多的很容易实现自动补全 ,看一下就ok了 自己搜吧!
http://search.download.csdn.net/search/prototype也不要你搜了 就这些吧
[解决办法]
function change(sword){
highlight=-1;
var url = "/searchAjax.asp?q=" + sword + "&\r\=" + Math.random();
ajax.get(
url,
function(obj) {
if (obj.responseText=="err30"){
set($("sAlert"),"");
$("sAlert").style.display="none";
}
else
{
set($("sAlert"),obj.responseText);
$("sAlert").style.display="block";
return true;
}
}
);
}
function hideSword(){
if(getFocus==false){
set($("sAlert"),"");
$("sAlert").style.display="none";
highlight=-2;
}else{
return true;
}
}
function S(OBJ){
$('searchword').value=OBJ.innerHTML;
$('sAlert').style.display='none';
$('formsearch').submit();
}
function checkKey(e,sword){
if(e.keyCode==13){
$('sAlert').style.display='none';
check();
}else if(e.keyCode==40){
if(highlight==-2){change(sword);return false;}
highlight++;
var total = $('sTab').rows.length-1;
if(highlight>total){highlight=0;}
for(i=0;i<=total;i++){
if(i==highlight){
$('sTab').rows[i].style.background='#1181bf';
$('sTab').rows[i].style.color='#FFFFFF';
$('searchword').value=$('sTab').rows[i].cells[0].innerHTML;
} else {
$('sTab').rows[i].style.background='#FFFFFF';
$('sTab').rows[i].style.color='#000000';
}
}
}else if(e.keyCode==38){
highlight--;
var total = $('sTab').rows.length-1;
if(highlight<0){highlight=total;}
for(i=0;i<=total;i++){
if(i==highlight){
$('sTab').rows[i].style.background='#1181bf';
$('sTab').rows[i].style.color='#FFFFFF';
$('searchword').value=$('sTab').rows[i].cells[0].innerHTML;
} else {
$('sTab').rows[i].style.background='#FFFFFF';
$('sTab').rows[i].style.color='#000000';
}
}
if(highlight<0){highlight=0}
}else{change(sword);}
}
<input type="text" name="searchword" id="searchword" onkeyup="checkKey(event,this.value);" onblur="hideSword();" onclick="this.style.color='#000';if(this.value=='想找\'暮光之城3\'?试着输入\'mgzc3\'吧!') this.value='';" value="想找'暮光之城3'?试着输入'mgzc3'吧!" maxlength="26" autocomplete="off" />
xhr.send(null);
}
else $("divSuggestions").style.visibility="hidden";
}
function hdlRsp(){
if(xhr.readyState==4&&xhr.status==200){
var rspText=xhr.responseText;
var oDiv=$("divSuggestions");
if(rspText!=""){
var arrRspText=xhr.responseText.split(',');
var sInnerHtml="";
for(var i=0;i<arrRspText.length;++i){
sInnerHtml+="<span onmouseover='setStyle(this,true)' onmouseout='setStyle(this,false)'"
+" onclick='setInput(this)'>"+arrRspText[i]+"</span>";
}
oDiv.innerHTML=sInnerHtml;
oDiv.style.visibility="visible";
}
else oDiv.style.visibility="hidden";
}
}
function setStyle(srcElm,bOver){
srcElm.style.background=bOver?"orange":"";
}
function setInput(srcElm){
$("<%=txtInput.ClientID %>").value=srcElm.innerHTML;
}
</script>
</body>
</html>
.CS
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class WordSuggest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strInput = string.IsNullOrEmpty(Request.QueryString["w"]) ? string.Empty : Request.QueryString["w"];
if (strInput.Trim().Length != 0)
{
Suggeste(strInput);
}
}
private void Suggeste(string originalStr)
{
/* 搜索建议
* 文件名: WordSuggest.aspx
* 功能描述: 根据用户输入,在数据库 Northwind 的表 Customers 查找 CustomerID 字段值匹配的记录.
*/
SqlConnection conn = new SqlConnection("data source=localhost;database=northwind;user id=sa;password=你的密码");
string cmdText = "SELECT TOP 10 CustomerID FROM Customers WHERE CustomerID LIKE @w";
SqlParameter para = new SqlParameter("@w", string.Format("{0}%", originalStr));
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.Parameters.Add(para);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
System.Text.StringBuilder sb = new System.Text.StringBuilder();
while (reader.Read())
{
sb.AppendFormat("{0},", reader[0]);
}
reader.Close();
conn.Close();
Response.ContentType = "text/plain";
Response.Clear();
if (sb.Length != 0)
{
Response.Write(sb.ToString().Remove(sb.Length - 1));
}
else
{
Response.Write(string.Empty);
}
Response.Flush();
Response.Close();
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/windows2000/archive/2010/08/14/5812323.aspx
[解决办法]
ajax有个自动补全的控件,建个webservice文件,实现模糊查询控件名好像是autocomplete,具体我既不清楚了,再增加控件里面的属性就可以了