仿google智能下拉ajax非插件

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>阿里西西特效演示页 仿Google搜索 搜索文本框智能提示特效代码</title>
<style>
 .focus{background-color:blue;color:White}
 .unfocus{background-color:White;color:Black}
 </style>
<script type="text/javascript">
var obj;
var to;//setTimeout时间变量,对于输入快时可以延迟查询
var Ext="asp";//更换为asp/asp.net/php也是修改这里的文件后缀名就可以了
var dirPath="";//如果更换过路径,注意路径也要修改
function $(id){return document.getElementById(id);}
function getD(e,va){
  e=e||event;
  if(e.keyCode==38||e.keyCode==40||e.keyCode==13)return;
  if(to) clearTimeout(to);
  to=setTimeout("getData('"+va+"')",500);//延迟500毫秒后再查询
}
function getData(va){
  $('dvContent').style.display="none";
  if(va!=""){//注意这个要编码关键字,要不出现中文在服务器端获取不到,php需要encodeURIComponent来编码,asp和aspnet需要escape
    var url=dirPath+'read.'+Ext+'?ts='+new Date().getTime()+'&k='+(Ext=="php"?encodeURIComponent(va):escape(va));

    obj=CreateAJAX();
    if(obj){
      obj.onreadystatechange=handlejs;
      obj.open('get',url,true);
      obj.send(null);
    }
    else alert("创建AJAX对象失败!");
  }
}
function handlejs(){
   if(obj.readyState==4){ 
      if(obj.status==200){               
            xml=obj.responseXML;
            node=xml.getElementsByTagName("data");
            if(node.length!=0){//如果d节点的子节点不为0,则取数据            
              var dv=$("dvContent");
              dv.innerHTML=node[0].firstChild.nodeValue;
              dv.style.display="block";
          CurrentIndex=-1;//重新设置焦点项
            }
      }
      else  alert("请求的文件出错,请检查!");                     
   }   
}
function CreateAJAX(){  
  if(typeof(XMLHttpRequest)!="undefined")return new XMLHttpRequest();
  if(window.ActiveXObject){
     var objs=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHTTP"];    
     var xmlhttp;
     for(var i=0;i<objs.length;i++){
       try{
         xmlhttp=new ActiveXObject(objs[i]);return xmlhttp;
       }
       catch(e){
         //do nothing
       } 
     }
   }  
}
function setContent(data,IsKey){
  $('kw').value=data;
  if(!IsKey){
    $('dvContent').style.display="none";
    CurrentIndex=-1;
  }
}
function setPosition(){
  var dv=$('dvContent');
  dv.style.left=getPos("x");
  dv.style.top=getPos("y")+$('kw').offsetHeight+1;
  dv.style.width=$('kw').offsetWidth;
}
function getPos(type){
  var p;
  var o=$('kw');
  if(type=="x")p=o.offsetLeft;
  else p=o.offsetTop;
  while(o=o.offsetParent){
    if (type=="x") p+=o.offsetLeft; 
    else p+=o.offsetTop;
  }
  return p;
}
var CurrentIndex=-1;
document.οnkeydοwn=function(e){
  e=e||event;
  var DC=$("dvContent");
  if(DC.style.display=="none")return;//不显示时不响应按键
  var items=DC.getElementsByTagName("div");
  var itemLength=items.length;
  if(itemLength<1) return;//没有匹配的内容时不响应按键

  if(items[CurrentIndex])items[CurrentIndex].className="unfocus";
  if(e.keyCode==38){//上  
    if(CurrentIndex==-1) CurrentIndex=0;
    else CurrentIndex--;
    if(CurrentIndex<0)  CurrentIndex=itemLength-1;    
  }
  else if(e.keyCode==40){//下  
    if(CurrentIndex==-1) CurrentIndex=0;
    else CurrentIndex++;
    if(CurrentIndex>itemLength-1)CurrentIndex=0;  
  }
  else if(e.keyCode==13)setContent(items[CurrentIndex].innerHTML);
  if(CurrentIndex!=-1){
     items[CurrentIndex].className="focus";
     setContent(items[CurrentIndex].innerHTML,true);
  }
}

</script>
</head>
<body οnlοad="setPosition()">
<h1>仿Google搜索 搜索文本框智能提示特效代码</h1>
<br /><br /><br />
智能搜索:<input type="text" style="width:300px" id="kw" name="kw" οnkeyup="getD(event,this.value)"/><br/>
<div id="dvContent" style="display:none;position:absolute;border:solid 1px black;"></div><br />
请尝试输入 www.alixixi.com 或 阿里西西 。更多特效代码请访问:<a href="http://js.alixixi.com">http://js.alixixi.com</a>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下拉菜单是网页中常见的交互元素之一,可以让用户方便地选择所需的选项。使用 Ajax 技术实现下拉菜单可以在不刷新整个页面的情况下动态加载数据和更新页面内容,提高用户体验。 下面是一个简单的示例,演示如何使用 Ajax 技术实现下拉菜单: HTML 代码: ``` <select id="select1"> <option value="">请选择</option> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> <select id="select2"> <option value="">请选择</option> </select> ``` JS 代码: ``` // 获取第一个下拉菜单 var select1 = document.getElementById("select1"); // 监听 select1 的 change 事件,当选项改变时触发 select1.addEventListener("change", function() { // 获取选中的值 var selectedValue = select1.value; // 如果选中的值为空,则清空第二个下拉菜单 if (selectedValue === "") { document.getElementById("select2").innerHTML = "<option value=''>请选择</option>"; return; } // 发送 Ajax 请求获取第二个下拉菜单的选项 var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 解析服务器返回的数据 var options = JSON.parse(xhr.responseText); // 构建第二个下拉菜单的选项 var html = "<option value=''>请选择</option>"; options.forEach(function(option) { html += "<option value='" + option.value + "'>" + option.label + "</option>"; }); // 更新第二个下拉菜单 document.getElementById("select2").innerHTML = html; } }; xhr.open("GET", "getOptions.php?selectedValue=" + selectedValue); xhr.send(); }); ``` 在上面的代码中,我们首先获取了第一个下拉菜单,并监听其 change 事件。当用户选择了一个选项时,我们获取其选中的值,并发送 Ajax 请求到服务器端获取第二个下拉菜单的选项。服务器端可以使用 PHP 等语言处理请求,并返回一个 JSON 数据,其中包含了第二个下拉菜单的选项。在客户端收到服务器返回的数据后,我们解析 JSON 数据,构建第二个下拉菜单的选项,并更新页面内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值