zoukankan      html  css  js  c++  java
  • asp: suggest ajax

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>suggest ajax示例</title>
    <meta name="author" content="geovindu 塗聚文"/><style type="text/css">
    .ajaxsearch {  
     300px; /*提示层的宽度 */
    </style>
    <script language="javascript" src="suggestajax.js" type="text/javascript"></script> 
    
    </head> 
     
    <body onResize="removediv();"> 
    <div style="margin:20px 50px"> 
    <input style="298px;height:18px" type="text" autocomplete="off" onBlur="blurdeal();" onKeyDown="keydowndeal(event);" onFocus="focusdeal(event);" /> 
    </div> 
    </body>
    
    </html>
    

     suggestajax.js:

    ///////////////////////////////搜索提示框/////////////////////////////////  
    var obj_div;     //提示层对象  
    var obj_input;     //输入框对象  
    var main_delay;     //判断值变化延迟对象  
    var ajax_delay;     //ajax延迟搜索对象  
    var updown_delay;    //方向键延迟对象  
    var ajax_xmlhttp;    //ajax对象  
    var div_word=null;    //当前提示层对应的搜索值  
    var li_num=-1;     //伪光标位置,提示层被选中的li序号,从0开始  
    var li_down=-1;     //鼠标按下提示层的序号  
    var value_ed="";    //输入框延迟前的值  
    var value_ing="";    //输入框当前的值  
    var value_unexit="";   //搜索过没有结果的值开头  
    var updown_run=false;   //允许方向键上下  
    var ajax_run=false;    //true为正常进程,false停止ajax  
    var ajax_run_ing=false;   //true正在运行,false空闲  
    var input_focus=false;   //文本框焦点  
    var url="ajax.asp";    //后台地址**********************************************************  
    var time_delayajax=300;   //搜索延迟**********************************************************  
    var time_delayupdown=100;  //方向键延迟********************************************************  
     
    var $=function(Fun_id){  
     return document.getElementById(Fun_id);  
    }  
    try{  
     ajax_xmlhttp= new ActiveXObject('Msxml2.XMLHTTP');  
    }catch(e){  
     try{  
      ajax_xmlhttp= new ActiveXObject('Microsoft.XMLHTTP');  
     }catch(e){  
      try{  
       ajax_xmlhttp= new XMLHttpRequest();  
      }catch(e){ajax_xmlhttp=null;}  
     }  
    }  
    ////////////////////////创建提示层////////////////////////  
    function createajaxdiv(){  
     var create_div = document.createElement("div");  
     create_div.type = "div";  
     var promptdiv = document.body.appendChild(create_div);  
     promptdiv.className = "ajaxsearch";  
     obj_div=promptdiv;  
    }  
    ////////////////////////设置提示层位置////////////////////////  
    function removediv(){  
     if(!obj_div || !obj_input)return false;  
     if(obj_div.style.display=="none")return false;  
     var obj=obj_input;  
     var xtop=0;  
     var xleft=0;  
     while(obj){  
      xtop += obj["offsetTop"];  
      xleft += obj["offsetLeft"];  
      obj = obj.offsetParent;  
     }  
     obj_div.style.left = xleft + "px";  
     obj_div.style.top = (xtop + 20) + "px";    //20差不多是输入框的高度,请根据实际情况调整************************************************************8  
     li_down=-1;  
    }  
    ////////////////////////隐藏提示层////////////////////////  
    function hideajaxdiv(){  
     obj_div.style.display="none";  
     li_down=-1;  
    }  
    ////////////////////////设置被选<li>css样式////////////////////////  
    function setlistyle(){  
     for(var i=0;i<obj_div.firstChild.childNodes.length;i++){  
      obj_div.firstChild.childNodes[i].id="";  
     }  
     if(li_num!=-1)obj_div.firstChild.childNodes[li_num].id="liseleted";  
    }  
    ////////////////////////鼠标经过提示层////////////////////////  
    function overli(Fun_seletedlinum){  
     if(li_num==-1)value_ing=obj_input.value;  
     li_num=Fun_seletedlinum;  
     setlistyle();  
    }  
    ////////////////////////鼠标拖动提示层////////////////////////  
    function moveli(){  
     if(window.getSelection){  
      setfocus();  
      window.getSelection().removeAllRanges();  
     }else{  
      document.selection.empty();  
      setfocus();  
     }  
    }  
    ////////////////////////鼠标按下提示层////////////////////////  
    function downli(Fun_seletedlinum){  
     if(!obj_input)return false;  
     li_down=Fun_seletedlinum;  
     input_focus=true;  
    }  
    ////////////////////////鼠标弹起提示层////////////////////////  
    function upli(Fun_seletedlinum,Fun_event){  
     if(!obj_input)return false;  
     if(Fun_event.button==2){li_down=-1;return}  
     if(li_down!=Fun_seletedlinum){  
      li_down=-1;  
      return false;  
     }  
     clearTimeout(ajax_delay);  
     clearTimeout(updown_delay);  
     updown_run=true;  
     ajax_run=false;  
     ajax_run_ing=false;  
     li_num=-1;  
     div_word=null;  
     
     value_ed=obj_div.firstChild.childNodes[Fun_seletedlinum].childNodes[1].nodeValue;  
     obj_input.value=value_ed;  
     value_ing=value_ed;  
     hideajaxdiv();  
     obj_div.innerHTML="";  
    }  
    ////////////////////////设置文本框获取焦点///////////////////////  
    function setfocus(){  
     if(window.event){  
      var r = obj_input.createTextRange();  
      r.moveStart('character',obj_input.value.length);  
      r.collapse(true);  
      r.select();  
     }else{  
      obj_input.selectionStart=obj_input.value.length;  
      obj_input.focus();  
     }  
    }  
    ////////////////////////文本框失去焦点////////////////////////  
    function blurdeal(){  
     if(input_focus==true){  
      setfocus();  
      setTimeout("setfocus()");  
      return false;  
     }  
     updown_run=false;  
     ajax_run=false;  
     ajax_run_ing=false;  
     clearInterval(main_delay);  
     clearTimeout(ajax_delay);  
     clearTimeout(updown_delay);  
     hideajaxdiv();  
     if(value_ed!=obj_input.value)obj_div.innerHTML="";  
    }  
    ////////////////////////文本框获取焦点////////////////////////  
    function focusdeal(Fun_event){  
     if(!obj_div)createajaxdiv();  
     if(input_focus==true){  
      input_focus=false;  
      return false;  
     }  
     var obj=((window.event)?Fun_event.srcElement:Fun_event.target);  
     if(obj.type!="text")return false;  
     updown_run=true;  
     ajax_run=true;  
     ajax_run_ing=false;  
     if(obj_input==obj && value_ed==obj.value && obj_div.innerHTML!=""){  
      obj_div.style.display="block";  
      removediv();  
     }else{  
      obj_input=obj;  
      value_ed=obj.value;  
      value_ing=obj.value;  
      value_unexit="";  
      li_num=-1;  
      li_down=-1;  
      div_word=null;  
      obj_div.innerHTML="";  
      removediv();  
     }  
     main_delay=setInterval("mainajax()",10);  
    }  
    ////////////////////////主函数////////////////////////  
    function mainajax(){  
     if(value_ed==obj_input.value)return false;  
     if(value_unexit!="" && (obj_input.value).indexOf(value_unexit)==0){hideajaxdiv();obj_div.innerHTML="";return false;}  
     if(value_ed!=obj_input.value && ajax_run_ing==false){  
      ajax_run=true;  
      value_ed=obj_input.value;  
      clearTimeout(ajax_delay);  
      if(obj_input.value!=""){  
       ajax_delay=setTimeout("getsearch();",time_delayajax);  
      }else{  
       hideajaxdiv();  
       obj_div.innerHTML="";  
       ajax_run=false;  
       return false;  
         
      }    
     }  
    }  
    ////////////////////////获取搜索内容////////////////////////  
    function getsearch(){  
     var temp_value=obj_input.value;  
     if(ajax_xmlhttp==null){  
      return false;  
     }else if(ajax_xmlhttp.readyState!=0){  
      ajax_xmlhttp.abort();  
      ajax_run_ing=false;  
     }  
     ajax_xmlhttp.onreadystatechange=function(){  
      if(ajax_run==false){ajax_xmlhttp.abort();ajax_run_ing=false;return false;}  
      if(ajax_xmlhttp.readyState==4){  
       obj_div.innerHTML="";  
       if(ajax_xmlhttp.status==200 || ajax_xmlhttp.status==304){  
        var contant=ajax_xmlhttp.responseText;  
        if(contant!="" && ajax_run==true){  
         div_word=temp_value;  
         obj_div.innerHTML=resetcontant(contant);  
         obj_div.style.display="block";  
         removediv();removediv();  
        }else{  
         hideajaxdiv();  
        }  
        updown_run=true;  
        ajax_run_ing=false;  
        li_num=-1;  
        if(contant=="")value_unexit=temp_value;  
       }  
      }  
     }  
     ajax_xmlhttp.open("post",url,true);  
     ajax_xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');  
     ajax_run_ing=true;  
     ajax_xmlhttp.send("sift_value="+escape(temp_value)); //提交到后台的值*****************************************  
    }  
    ////////////////////////内容重组///////////////////////  
    function resetcontant(Fun_contant){  
     if(Fun_contant==null || Fun_contant=="")return "";  
     var a=Fun_contant.substring(1,Fun_contant.length-1);  
     if(Fun_contant==null || Fun_contant=="")return "";  
     var b=a.split("''");  
     var c;  
     var d;  
     d="<ul>";  
     for(var i in b){  
      c=b[i].split(",");  
      //***************************************************************  
      d=d+"<li onmouseover="overli("+i+");" onmousedown="downli("+i+")" onmouseup="upli("+i+",event)" onmousemove="moveli();"><span>"+c[1]+"</span>"+c[0]+"</li>";  //约 结果
      //***************************************************************  
     }  
     d=d+"<li onmousedown="input_focus=true;li_down=-1;" onmouseup="li_down=-1" onmousemove="moveli();"><span><a class="shutajaxdiv" onclick="hideajaxdiv();">关闭</a></span></li>" 
     d=d+"</ul>";  
     return d;  
    }  
    ////////////////////////键盘事件////////////////////////  
    function keydowndeal(Fun_event){  
     var keyc=((window.event)?Fun_event.keyCode:Fun_event.which);  
     if(keyc==13){hideajaxdiv();return false;}  
     if(keyc==27){  
      if(obj_div.style.display=="block" && li_num>-1)value_ed=obj_input.value=value_ing;  
      hideajaxdiv();  
      return false;  
     }   
     if(keyc==40 || keyc==38){  
      if(div_word==obj_input.value && obj_div.style.display=="none" && obj_div.innerHTML!=""){  
       obj_div.style.display="block";  
       removediv();  
       return false;  
      }  
      if(li_num==-1){  
       if(div_word!=obj_input.value)return false;  
      }else{  
       if(div_word!=value_ing)return false;  
      }  
      if(updown_run==false || ajax_run_ing==true || obj_div.style.display=="none")return false;  
      updown_delay=setTimeout("updownli("+keyc+")",time_delayupdown);  
      updown_run=false;  
     }  
    }  
    ////////////////////////方向键移动li////////////////////////  
    function updownli(Fun_key){  
     if(!obj_div){return false;}  
     updown_run=true;  
     if(li_num==-1){  
      if(div_word!=obj_input.value){hideajaxdiv();obj_div.innerHTML="";li_num=-1;return false;}  
     }else{  
      if(div_word!=value_ing){hideajaxdiv();obj_div.innerHTML="";li_num=-1;return false;}  
     }  
     if(updown_run==false)return false;  
     if(li_num==-1)value_ing=value_ed;  
     if(Fun_key==40){  
      if(li_num<obj_div.firstChild.childNodes.length-2){  
       li_num++;  
      }else{  
       li_num=-1;  
      }  
     }  
     if(Fun_key==38){  
      if(li_num>=0){  
       li_num--;  
      }else{  
       li_num=obj_div.firstChild.childNodes.length-2;  
      }  
     }  
     if(li_num!=-1){  
      value_ed=obj_input.value=obj_div.firstChild.childNodes[li_num].childNodes[1].nodeValue;  
     }else{  
      value_ed=obj_input.value=value_ing;  
     }  
     setlistyle();  
    } 
    

     ajax.asp

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001" %>  
    <%Response.CodePage="65001"%>  
    <%Response.Charset="utf-8" %>  
    
    <!--#include file="Conn.asp"-->
    <%  
    
    
    
    dim Sift_value  
    dim Sql,Rs,I,Num  
    dim Contant  
    Contant="" 
    Num=10  
    
    
    Sift_value=replace(unescape(request.form("sift_value")),"""","""""")  
     
    Sql="select top "&Num&" ShopAddress,LicenseId from LC where ShopAddress like '%"&Sift_value&"%' order by LicenseId" 
    'Response.Write Sql
    set Rs=server.CreateObject("adodb.recordset")  
    Rs.open Sql,O_con,1,1  
    if not (Rs.eof and Rs.bof) then  
     for I=0 to Num-1  
      Contant=Contant&"'"&rs(0)&","&rs(1)&"'" 
      Rs.movenext  
      if Rs.eof then exit for  
     next  
    end if  
    response.Write(Contant)  
    Rs.close  
    set Rs=nothing  
    %> 
    
  • 相关阅读:
    Yarn的三种调度器
    tcpdump 常用用法
    Openssh升级脚本
    RAID详解及软RAID管理
    zabbix安装部署
    Linux根分区、SWAP分区扩容
    Windows server 2012 控制面板打不开防火墙
    Windows Server 设置时间同步出错问题
    Windows dos命令激活系统
    Swap分区大小设置
  • 原文地址:https://www.cnblogs.com/geovindu/p/3485874.html
Copyright © 2011-2022 走看看