亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ajax之搜索提示

2019-11-17 04:21:23
字體:
來源:轉載
供稿:網友

數據庫表: 復制內容到剪貼板
代碼:

CREATE TABLE `xqbar`.`suggest` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR( 100 ) NOT NULL ,
`hits` INT NOT NULL DEFAULT '0',
PRIMARY KEY ( `id` )
) ENGINE = InnoDB

insert into suggest(title,hits)values('xqbar.com',100);
insert into suggest(title,hits)values('www.xqbar.com',410);
insert into suggest(title,hits)values('http://xqbar.com',700);
insert into suggest(title,hits)values('mail:xqbar.com',200);
insert into suggest(title,hits)values('ftp:xqbar.com',100);
insert into suggest(title,hits)values('http://www.xqbar.com',70)search.php
(關于php我也是接觸不久,下面的php如果羅嗦還望高手指點)
返回的信息字符串要為 xxx1|xxx2$200|100 前后對應 復制內容到剪貼板
代碼:

<?php
if($_GET["action"]!=''){
   #獲取用戶輸入的關鍵字
   $keyWord=$_GET["keyword"];
   #過濾關鍵字
   $keyword=str_replace("[","[[]",$keyword);
   $keyword=str_replace("&","[&]",$keyword);
   $keyword=str_replace("%","[%]",$keyword);
   $keyword=str_replace("^","[^]",$keyword);
   #鏈接數據庫
   $conn=MySQL_connect("localhost","xqbar","xqbaradmin");
   #選擇數據庫
   @mysql_select_db("xqbar") or die('sorry');
   mysql_query('set names utf-8');
   #查詢語句
   $sql="select title,hits from suggest where title like '%".$keyword."%' order by hits desc limit 10";
   $result=mysql_query($sql);
   #循環得到查詢結果,返回字符串
   #格式為 結果1|結果2$結果1點擊次數|結果2點擊次數
   if($result){
   $i=1;$title='';$hits='';
   while($row=mysql_fetch_array($result,MYSQL_BOTH))
   {
     $title=$title.$row['title'];
   $hits=$hits.$row['hits'];
   if($i<mysql_num_rows($result))
  {
   $title=$title."|";
   $hits=$hits."|";
  }
  $i++;
    }
   }
   mysql_close();
}
?>
<?php echo $title.'$'.$hits;?>js代碼 復制內容到剪貼板
代碼:


引入prototye.js有朋友說這個庫太大,或者把,不習慣的朋友可以使用jquery.js框架或者直接創建Ajax對象,這個我就不想說了,這里直接引用prototye.js框架
<script type="text/javascript" src="prototype.js"></script>
創建層和顯示查詢結果的js代碼
<script type="text/Javascript">
//定義變量lastindex 表示為鼠標在查詢結果上滑動所在位置,初始為-1
var lastindex=-1;
//定義變量flag 表示是否根據用戶輸入的關鍵字進行ajax查詢,flase為允許查詢 true為禁止查詢
var flag=false;
//返回的查詢結果生成的數組長度
var listlength=0;
//創建自定字符串,優化效率
function StringBuffer(){this.data=[];}
//賦值
StringBuffer.prototype.append=function(){this.data.push(arguments[0]);return this;}
//輸出
StringBuffer.prototype.tostring=function(){return this.data.join("");}
//去掉字符串兩邊空格
String.prototype.Trim = function(){return this.replace(/(^/s*)|(/s*$)/g, "");}
//隱藏函數 主要是隱藏顯示的提示下拉層和iframe,關于iframe下面在說其作用
function hiddensearch()
{
$('rlist').style.display="none";
$('rFrame').style.display="none";
}
//顯示函數 主要是顯示的提示下拉層和iframe 參數num,根據該參數控制要顯示提示層和iframe的高度
function showsearch(num)
{
  $('rlist').style.display='';
  $('rFrame').style.display='';
  //這里我定義每個返回查詢結果的提示高度為20px,其中提示層總高度又加了num,是因為我在定義樣式時使用了padding一個像素
  $('rlist').style.height=num*20+num+'px';
  //同樣定位iframe的高度
  $('rFrame').style.height=num*20+num+'px';
}
//返回文本輸入框的坐標函數,參數element為要返回的對象,參數offset可選為offsetLeft|offsetTop 分別表示為該對象距離左窗口上角的絕對位置
//www.devdao.com 利用這個函數可以定位我們要顯示的提示層位置,使提示層正確的顯示在文本輸入框下面
function getposition(element,offset)
{
    var c=0;
    while(element)
    {
        c+=element[offset];
        element=element.offsetParent
    }
    return c;
}
//創建提示層函數 包括提示層和為了避免在文本輸入框下面出現select下拉選框時我們的提示層不能再select之上的iframe
//可以理解為當文本輸入框下有select下拉選框時從底向上依次為 select下拉選框-iframe-提示層
function createlist()
{
//創建提示層
var listDiv=document.createElement("div");
//提示層id
listDiv.id="rlist";       
listDiv.style.zIndex="2";
listDiv.style.position="absolute";
listDiv.style.border="solid 1px #000000";
listDiv.style.backgroundColor="#FFFFFF";
listDiv.style.display="none";
listDiv.style.width=$('keyword').clientWidth+"px";
listDiv.style.left=getposition($('keyword'),'offsetLeft')+1.5+"px";
listDiv.style.top =(getposition($('keyword'),'offsetTop')+$('keyword').clientHeight +3)+"px";

var listFrame=document.createElement("iframe");
listFrame.id="rFrame";
listFrame.style.zIndex="1";
listFrame.style.position="absolute";
listFrame.style.border="0";
listFrame.style.display="none";
listFrame.style.width=$('keyword').clientWidth+"px";
listFrame.style.left=getposition($('keyword'),'offsetLeft')+1+"px";
listFrame.style.top =(getposition($('keyword'),'offsetTop')+$('keyword').clientHeight +3)+"px";
document.body.appendChild(listDiv);      
document.body.appendChild(listFrame);
}
function setstyle(element,classname)
{
switch (classname)
    {
     case 'm':
       element.style.fontSize="12px";
    element.style.fontFamily="arial,sans-serif";
    element.style.backgroundColor="#3366cc";
    element.style.color="black";
    element.style.width=$('keyword').clientWidth-2+"px";
    element.style.height="20px";
          element.style.padding="1px 0px 0px 2px";
          if(element.displaySpan)element.displaySpan.style.color="white"
    break;
     case 'd':
       element.style.fontSize="12px";
    element.style.fontFamily="arial,sans-serif";
    element.style.backgroundColor="white";
    element.style.color="black";
    element.style.width=$('keyword').clientWidth-2+"px";
    element.style.height="20px";
          element.style.padding="1px 0px 0px 2px";
          if(element.displaySpan)element.displaySpan.style.color="green"
    break;
  case 't':
       element.style.width="80%";
    if(window.navigator.userAgent.toLowerCase().indexOf("Firefox")!=-1)element.style.CSSFloat="left";
    else element.style.styleFloat="left";
    element.style.whiteSpace="nowrap";
    element.style.overflow="hidden";
    element.style.textOverflow="ellipsis";
    element.style.fontSize="12px";
    element.style.textAlign="left";
    break;
  case 'h':
       element.style.width="20%";
    if(window.navigator.userAgent.toLowerCase().indexOf("firefox")!=-1)element.style.cssFloat="right";
    else element.style.styleFloat="right";
    element.style.textAlign="right";
    element.style.color="green";
    break;
    }
}
function focusitem(index)
{
  if($('item'+lastindex)!=null)setstyle($('item'+lastindex),'d');
  if($('item'+index)!=null)
  {
   setstyle($('item'+index), 'm');
   lastindex=index;
  }
  else $("keyword").focus();
}
function searchclick(index)
{
  $("keyword").value=$('title'+index).innerHTML;
  flag=true;
}
function searchkeydown(e)
{
if($('rlist').innerHTML=='')return;
  var keycode=(window.navigator.appName=="Microsoft Internet Explorer")?event.keyCode:e.which;
  //down
  if(keycode==40)
  {
if(lastindex==-1||lastindex==listlength-1)
{
  focusitem(0);
  searchclick(0);
}
else{
  focusitem(lastindex+1);
  searchclick(lastindex+1);
}
  }
if(keycode==38)
{
if(lastindex==-1)
{
  focusitem(0);
  searchclick(0);
}
else{
  focusitem(lastindex-1);
  searchclick(lastindex-1);
}
}
if(keycode==13)
{
  focusitem(lastindex);
  $("keyword").value=$('title'+lastindex).innerText;
}   
if(keycode==46||keycode==8){flag=false;ajaxsearch($F('keyword').substring(0,$F('keyword').length-1).Trim());}
}
function showresult(xmlhttp)
{
var result=unescape(xmlhttp.responseText);
if(result!=''){
    var resultstring=new StringBuffer();
       var title=result.split('$')[0];
       var hits=result.split('$')[1];
    for(var i=0;i<title.split('|').length;i++)
    {
    resultstring.append('<div id="item'+i+'" onmousemove="focusitem('+i+')" onmousedown="searchclick('+i+')">');
    resultstring.append('<span id=title'+i+'>');
    resultstring.append(title.split('|'));
    resultstring.append('</span>');
    resultstring.append('<span id=hits'+i+'>');
    resultstring.append(hits.split('|'));
    resultstring.append('</span>');
    resultstring.append('</div>');
    }
    $('rlist').innerHTML=resultstring.tostring();
    for(var j=0;j<title.split('|').length;j++)
    {
     setstyle($('item'+j),'d');
  $('item'+j).displaySpan=$('hits'+j);
     setstyle($('title'+j),'t');
     setstyle($('hits'+j),'h');
    }
    showsearch(title.split('|').length);
    listlength=title.split('|').length;
    lastindex=-1;
}
else hiddensearch();
}
function ajaxsearch(value)
{
new Ajax.Request('search.php',{method:"get",parameters:"action=do&keyword="+escape(value),onComplete:showresult});
}
function main()
{
$('keyword').className=$('keyword').className=='inputblue'?'inputfocus':'inputblue';
if($F('keyword').Trim()=='')hiddensearch();
else
{
      if($F('keyword')!=''&&flag==false)ajaxsearch($F('keyword').Trim());
   if(listlength!=0)$('keyword').onkeydown=searchkeydown;
   else hiddensearch();
}
}
function oninit()
{
$('keyword').autocomplete="off";
$('keyword').onfocus=main;
$('keyword').onkeyup=main;
$('keyword').onblur=hiddensearch;
createlist();
}
Event.observe(window,'load',oninit);
</script>搜索框 復制內容到剪貼板
代碼:

<form id="form1" name="form1" method="post" action="">
      <b>輸入搜索關鍵字</b>
    <input name="keyword" type="text" class="inputblue" id="keyword" maxlength="20" style="width:300px;" />
</form>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91天堂在线视频| 国产精品久久二区| 久久久久久国产精品久久| 国产精品久久久久久久久男| 久久久久亚洲精品国产| 国产精品丝袜久久久久久高清| 精品国产999| 青青久久av北条麻妃黑人| 2019中文字幕全在线观看| 日韩网站免费观看高清| 久久天天躁狠狠躁夜夜av| 亚洲精品福利视频| 久久天堂av综合合色| 国产精品第一第二| 久久人人爽人人爽人人片亚洲| 日韩视频中文字幕| 社区色欧美激情 | 92福利视频午夜1000合集在线观看| 欧美综合一区第一页| 久青草国产97香蕉在线视频| 国产乱肥老妇国产一区二| 在线看福利67194| 色偷偷91综合久久噜噜| 最近2019中文字幕一页二页| 久久久精品网站| 久久久久久国产精品三级玉女聊斋| 亚洲va久久久噜噜噜| 亚洲精品视频免费在线观看| 久久中文久久字幕| 日韩在线观看免费高清完整版| 国内精品一区二区三区四区| 中文字幕国产日韩| 日韩在线播放av| 欧美激情videoshd| 欧美日韩在线第一页| 亚洲自拍欧美另类| 欧美极品欧美精品欧美视频| 国产精品成人品| 黑人巨大精品欧美一区二区三区| 精品国产1区2区| 亚洲精品美女久久久久| 伊人久久男人天堂| 亚洲成av人影院在线观看| 国产成人av网址| 亚洲天堂男人的天堂| 日韩精品在线播放| 久久久www成人免费精品张筱雨| 亚洲精品国产综合区久久久久久久| 最近中文字幕mv在线一区二区三区四区| 欧美精品在线第一页| 一本色道久久88精品综合| 亚洲黄色成人网| 亚洲欧洲第一视频| 日韩免费av片在线观看| 日韩精品视频在线| 久久天天躁狠狠躁夜夜躁2014| 久久久欧美精品| 欧美日韩美女在线观看| 中文字幕一区电影| 日韩经典中文字幕在线观看| 81精品国产乱码久久久久久| 中文字幕日韩精品在线| 成人444kkkk在线观看| 日韩精品在线观看一区| 欧美一级高清免费| 1769国内精品视频在线播放| 668精品在线视频| 中文字幕亚洲一区二区三区五十路| 欧美极品少妇xxxxⅹ免费视频| 91色中文字幕| 国产婷婷97碰碰久久人人蜜臀| 日产日韩在线亚洲欧美| 国产日本欧美一区| 欧美日韩一区二区在线| 国产欧美精品日韩| 久久久久久久一区二区| 亚洲午夜精品久久久久久久久久久久| 欧美性生交xxxxxdddd| 国产精品视频自在线| 亚洲性线免费观看视频成熟| 91精品国产色综合久久不卡98| 日韩精品极品视频免费观看| 中文字幕亚洲二区| 国产免费一区视频观看免费| 国产精品999999| 国产精品视频精品| 97精品国产97久久久久久免费| 91精品国产91久久久久久吃药| 久久噜噜噜精品国产亚洲综合| 亚洲精品狠狠操| 国产成人精品一区二区| 91精品国产综合久久香蕉的用户体验| 亚洲成在人线av| 国产精品日韩精品| 欧美精品videos性欧美| 国产精品一区二区av影院萌芽| 国产在线观看精品| 欧美电影免费观看高清| 日韩欧美一区二区在线| 尤物yw午夜国产精品视频| 亚洲日韩第一页| 久久精品国产久精国产思思| 97超碰蝌蚪网人人做人人爽| 国产精品久久久久久久久久免费| 91情侣偷在线精品国产| 欧美日韩免费在线| 欧美人在线观看| 欧美一级大片在线观看| 亚洲精品自拍第一页| 久久精品亚洲94久久精品| 久久久综合av| 亚洲男人天堂网站| 欧美日韩国产精品专区| 亚洲mm色国产网站| 中文字幕一区日韩电影| 97视频在线观看免费高清完整版在线观看| 亚洲a中文字幕| 欧美电影免费播放| 亚洲aa中文字幕| 96国产粉嫩美女| 欧美日韩一区二区精品| www.xxxx欧美| 日韩免费av在线| 国产视频久久久| 国产精品伦子伦免费视频| 亚洲人成网7777777国产| 人妖精品videosex性欧美| 最近2019年手机中文字幕| 午夜精品久久久久久久99热| 日韩中文字幕在线观看| 国产极品精品在线观看| 一区二区三区高清国产| 亚洲人高潮女人毛茸茸| 91免费看片网站| 91视频国产精品| 久久久欧美精品| 久久天天躁狠狠躁夜夜躁2014| 91在线观看欧美日韩| 久久国产精品免费视频| 精品久久香蕉国产线看观看亚洲| 色综合久综合久久综合久鬼88| 欧美激情视频网站| 国产精品免费一区二区三区都可以| 亚洲人精品午夜在线观看| 日韩一区二区久久久| 91av在线看| 久久久亚洲网站| www欧美xxxx| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品wwwwww| 91社区国产高清| 亚洲国产精品国自产拍av秋霞| 在线日韩中文字幕| 成人乱人伦精品视频在线观看| 亚洲一区二区久久久久久| 久久免费视频这里只有精品| 成人羞羞国产免费| 中文日韩在线观看| 亚洲人线精品午夜| 最近2019中文字幕mv免费看| 久久好看免费视频| 蜜臀久久99精品久久久无需会员| 亚洲图片欧美午夜| 国语自产精品视频在线看抢先版图片|