日期:2014-05-16  浏览次数:20634 次

求 百度智能提示框原理
百度的智能提示大家已经知道了,但是我不太懂他的原理。现在有一个想法:
我在文本框里输入了文字,把百度的智能提示框里提示的内容全都显示出来。
ag:我输入了新闻,把下拉框里“新闻网、新闻联播。。”等值全部保存起来怎么做。


------解决方案--------------------
学习一下prototype那个框架和jQuery差不多的很容易实现自动补全 ,看一下就ok了 自己搜吧!
http://search.download.csdn.net/search/prototype也不要你搜了 就这些吧
------解决方案--------------------
探讨
可能是我说的不够清楚吧,我是说我要取百度里下拉菜单里的值。是百度里的下拉菜单值。不是我自己数据库里的。我在文本框里输入字符串以后,把百度返回给用户的下拉单里的值保存到数据库

------解决方案--------------------
要自己写起来还真是有那么一点点麻烦~尤其是调效果。
JScript code

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);}
}

------解决方案--------------------
搜索建议(Searching Suggestion),已布置好样式

大家应该都看到过 GOOGLE 的搜索建议,就是当我们在输入关键词时,GOOGLE 会根据我们目前已输入的字显示相关的关键字建议,这就是搜索建议,现在很多网站都实现该友好的功能,如 YAHOO、狗狗搜索等。 

实现该功能的思路就是: 
在关键字输入框里,当用户按键弹起时,发送输入框里的字符串到服务器。 
服务器根据收到客户端发来的字进入匹配搜索 
将匹配用户已输入字的记录回发到客户端 
客户端收到服务端的响应,输出建议。 

其实就是异步回发(AJAX)。 

下面是一个实例,实例实现的是搜索 SQL Server 默认数据库 Northwind 表 Customers 字段 CustomerID,当用户要输入框输入字时,返回该字段值与用户输入的字开头匹配的记录,即 CustomerID LIKE '用户已输入的字%'。 

样式已设置好,显示建议的行为绝对位置,所以该行不会显示网页上的内容。 

文件名:WordSuggest.aspx 

源码如下: 

.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WordSuggest.aspx.cs" Inherits="WordSuggest" %>