JS实现关键字搜索下拉字段

这篇博客展示了如何使用JavaScript实现关键词搜索功能,当用户在输入框中输入时,会动态显示匹配的下拉选项。通过定义sources数组存储可搜索的网址,利用indexOf方法比较用户输入与数组元素,动态更新表格展示匹配项。同时,实现焦点和失去焦点时的样式变化,以及选中下拉选项填充到输入框的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>Hello World</title>
<link href="style.css" rel="stylesheet" type="text/css">

<script  type="text/javascript">
	sources= new Array("www.sina.com","www.baidu.com","www.google.com","www.sina.org","www.baidu.ogr.cn");
	tabinfo = "";
    flag = new Array(sources.length);
	for(var i=0;i<flag.length;i++)
		flag[i] = false ;
	
	function immediately(){
		
		var element = document.getElementById("i1");
		if("\v"=="v") {
			element.onpropertychange = webChange;
		}else{
			element.addEventListener("input",webChange,false);
		}
		function webChange(){
			var tab = document.all("dl1");
			for(var i=0;i<flag.length;i++)
				flag[i] = false ;//重新初始化
			if(element.value){
				var content = document.getElementById("i1").value;
				for(var i = 0 ;i < sources.length ; i ++){
					if(sources[i].indexOf(content) != -1){
						flag[i] = true;		
					}
				}
				for(var j=0;j<flag.length;j++){
				    
					if(flag[j]){//sources[j]有与文本框文字相同的内容
						if(tab.rows.length>0){
							for(var k=0;k<tab.rows.length;k++)
								if(tab.rows[k].cells[0].innerText.indexOf(content) == -1)
									tab.deleteRow(k);
						}
						for(var k=0;k<tab.rows.length;k++){
							tabinfo += tab.rows[k].cells[0].innerText;
						}	
						if(tabinfo.indexOf(sources[j]) == -1){	
							nrow = tab.insertRow(0);
							newcell = nrow.insertCell();
							newcell.innerHTML = sources[j] 
						}
						tabinfo = "";
					}
					
					
				}
			}
		}
	}

</script>
<script language="javascript">
   var lastObj=null;  
   function backBlack(){
       event.srcElement.style.background="gray";
	   forceBackC6();
	   if(event.srcElement.tagName=="TD"){
	        lastObj=event.srcElement;
	   }
	   fillData();
    }
   function backC6(){
       event.srcElement.style.background="#CCCCCC";
    }
   function forceBackC6(){
      if(lastObj!=null)
       lastObj.style.background="#F8F8FF";
    }


   function fillData(){
       if(lastObj.innerHTML!=null)
          document.all.i1.value=lastObj.innerHTML;  
    }
	
   function init(){
	   Layer1.style.top=i1.offsetTop+40;
	   Layer1.style.left=i1.offsetLeft;
	   Layer1.style.visibility="visible";
	}
   function hideBelow(){
       Layer1.style.visibility="hidden";
   }
</script>

</head>
<body>
<input type="text" id="i1"  style="height:20px" onFocus="init()" onBlur="hideBelow()"  />
<script type="text/javascript">
immediately();
</script>
<div id="Layer1">
  <table id="dl1" class="midHead" cellspacing="0" onMouseOut="backC6()" onMouseOver="backBlack()"  border="0" >
    
  </table>
</div>

<br>

</body>
</html>


网页下拉框智能诱导输入使用说明(V5.0) *------------------------------------------------------------------------------------------------------------- * 〖功能简介〗 * * 1) 在填写表单,对于下拉框有众多的条目,选择一个目标条目往往要拉动下拉框的 * 滚动条寻找,即花间又麻烦,本程序提供了诱导输入的功能。 * * 2)用户只要输入下拉选项每字的第一五笔或者拼音码,诱导框就会将最先匹配的n条记录 * (这个参数可以配置,由MAX_MATCH_COUNT来指定),显示在弹出框(窗口大小可以通过POPUP_WIDTH, * POPUP_HEIGHT参数设置)中,用户可用一般输入法选择记录的方法,将已匹配的条目选中:按空格, * 选中头条按数字选中对应的条目,按回车关闭窗口,取消选择. * * 3) 本诱导输入同支持中英文诱导,中文的编码方式支持五笔和拼音。英文诱导,中文五笔诱导,中文拼音诱导 * 的诱导功能可以通过ACTIVE_EN_QUICK_SELECT,ACTIVE_WB_QUICK_SELECT,ACTIVE_PY_QUICK_SELECT参数激活或关闭 * * 4)支持ie5.0 ie5.5 ie6.0 ~...,在ie5.0上,诱导提示窗口在浏览器的状态栏中,在ie5.5以上版本上诱导窗口为一个浮动 * 窗口。 * * 5)新版本特性:支持特殊字符的诱导,更改了不合法按键弹出窗口的问题,增加了delete键删除选项的功能(目前还不支持数据诱导) *--------------------------------------------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值