现在的位置: 首页 > 综合 > 正文

js搜索提示框

2018年05月21日 ⁄ 综合 ⁄ 共 3708字 ⁄ 字号 评论关闭

<html>
<head>
<title>Auto Search</title>
<meta http-equiv="content-Type" content="text/html; charset=utf-8" /> 
<script type="text/javascript" language="javascript">
	var highIndex=-1;//高亮索引
	var timeoutId;//超时标志
	/**
	 *处理键盘弹起事件
	 */
	function KeyUp(e)
	{
		var e = e;
		var keyCode = Key(e);
		
		var length = document.getElementsByTagName('li').length;
		
		if(keyCode == 38){
			if(highIndex<=0){
				highIndex=length-1;
			}else{
				highIndex=highIndex-1;
			}	
		}else if(keyCode == 40){
			if(highIndex >= length-1){
				highIndex = 0;
			}else{
				highIndex=highIndex+1;
			}
		}
		if((keyCode>=48 && keyCode<=57) || (keyCode>=65 && keyCode<=90) || (keyCode>=96 && keyCode<=105) || keyCode == 8){
			
			clearTimeout(timeoutId);
			timeId=setTimeout(AjaxPost,200);		
			}else if(keyCode == 38 || keyCode== 40 ){	
				KeyUpAndDown(highIndex);
			}else if(keyCode == 13){
				KeyEnter(highIndex);
			}
		}
	/**
	 *初始化弹出框口
	 */
	function Init()
	{
		document.getElementById('msg').style.display = 'block';
		document.getElementById('msg').style.position = 'absolute';
		document.getElementById('msg').style.left = '10px';
		document.getElementById('msg').style.top = '30px';
		document.getElementById('msg').style.listStyleType = 'none';
		document.getElementById('msg').style.backgroundColor = 'white';
		document.getElementById('msg').style.width = document.getElementById('input').style.width;
		
	}
	/**
	 *处理ajax请求
	 */
	function AjaxPost()
	{
		var input = document.getElementById('input').value;
		
		var url = 'data.php';
		var poststr = "in="+input;
		//实例化ajax
		var ajax = false;
		if(window.XMLHttpRequest) { //Mozilla 浏览器
            ajax = new XMLHttpRequest();
            if (ajax.overrideMimeType) {//设置MiME类别
                    ajax.overrideMimeType("text/xml");
            }
   	 	}
    	else if (window.ActiveXObject) { // IE浏览器
            	try {
                    ajax = new ActiveXObject("Msxml2.XMLHTTP");
            	} catch (e) {
                    try {
                            ajax = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
            	}
   	 	}
    	if (!ajax) { // 异常,创建对象实例失败
            window.alert("不能创建XMLHttpRequest对象实例.");
            return false;
    	}
		ajax.open('POST',url,true);
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		ajax.send(poststr);
		ajax.onreadystatechange = function(){
			if (ajax.readyState == 4 && ajax.status == 200) { 
			    msg.innerHTML = ajax.responseText; 
				if(ajax.responseText != ""){
					Init();
				}else{
					Display();
				}
			   } 
			};
	}
	 /**
	  *处理上下键
	  */
	function KeyUpAndDown(highIndex)
	{
		
		ChangeColor(highIndex);
	}
	/**
     *处理回车键
     */
	function KeyEnter(highIndex)
	{
		var li = document.getElementsByTagName('li');
		document.getElementById('input').value = li[highIndex].innerHTML;
		Display();
	}
	 /**
	  *处理鼠标滑过
	  */
	function MouseOver()
	{
		var theEvent = window.event || arguments.callee.caller.arguments[0];
	    var srcElement = theEvent.srcElement;
	    if (!srcElement) {
	       srcElement = theEvent.target;
	    }
		
		
		if(srcElement.tagName == 'LI'){
			var li = document.getElementsByTagName('li');
			for(i=0;i<li.length;i++){
				if(li[i].innerHTML == srcElement.innerHTML){
					ChangeColor(i);
				}
			}
		}
		
	}
	/**
	 *处理鼠标移出
	 */
	function MouseOut()
	{
		ChangeColor(-2);

	}
	/**
	 *处理鼠标单击
	 */
	function Click()
	{
		var theEvent = window.event || arguments.callee.caller.arguments[0];
	    var srcElement = theEvent.srcElement;
	    if (!srcElement) {
	       srcElement = theEvent.target;
	    }
		
		if(srcElement.tagName == "LI"){
			document.getElementById('input').value = srcElement.innerHTML;
			Display();
		}
	}
	/**
	 *DIV区域的隐藏
	 */
	function Display()
	{
		
		document.getElementById('msg').style.display = 'none';
	}
	/**
	 *选中高亮
	 */
	function ChangeColor(highIndex)
	{
		var li = document.getElementsByTagName('li');
		
		if(highIndex != -1 && li.length != 0){
			for(i=0;i<li.length;i++){
				if(li[i].style.backgroundColor == 'red'){
					li[i].style.backgroundColor = 'white';
				}
			}
			li[highIndex].style.backgroundColor='red';
			
		}
	}
	/**
	 *IE,FF兼容性
	 */
	function Key(e)
	{
		var e = e||event;
		var keyCode = e.keyCode||e.which ;
		return keyCode;
	}

</script>
</head>
<body>
<div id='all' onclick="Display()" style="position:absolute;left:0px;top:0px;height:100%;width:100%">
<input type='text' value='' id='input' onkeyup='KeyUp(event)' style="position:absolute;left:10px;top:10px;height:20px;width:230px">
<div id='msg' style='border-left:inset;border-right:outset;border-bottom:outset;border-width:1px;display:none' onclick="Click()" onmouseover="MouseOver()"
onmouseout="MouseOut()">
</div>
</div>
</body>
</html>




抱歉!评论已关闭.