如何实现下面的要求? 输入后通过XMLHttp将查询参数发送到服务端,查询后返回的内容显示在一个div中,在div中列出的数据中选择数据后设置此div为隐藏; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只响应键盘,并没有做响应鼠标的,数据在JS数组,<script type="text/javascript">var data = ["a", "ab", "ac", "abc", "b", "b1", "b2", "b123", "ice", "ice_berg","ice_berg16"];var $ = document.getElementById;function autoComplete(pattern){ if( pattern == "" ) { $("container").style.visibility='hidden'; return; } var reg = new RegExp("^"+pattern); reg.compile("^"+pattern); var lis = []; for(i=0;i<data.length;i++) { if( reg.test(data[i]) ) lis.push( "<li>"+data[i]+"</li>" ); } if( lis.length > 0 ) { $("container").innerHTML = lis.join(""); $("container").style.visibility='visible'; position($('container'), $('ice')); } else $("container").style.visibility='hidden';}function position(o,r){ or = r; l = r.offsetLeft; t = r.offsetTop; while(r=r.offsetParent) { l += r.offsetLeft; t += r.offsetTop; } o.style.left = l + "px"; o.style.top = (t + or.offsetHeight + 2 ) + "px";}var current = -1;var last = -1;document.onkeydown= function(){ itemSize = $("container").childNodes.length; switch( event.keyCode ) { case 38: //up if( current >= 0 ) last = current; current--; if( current < 0 ) current = itemSize - 1; changeItem(); break; case 40: //down if( current >= 0 ) last = current; current++; if( current > itemSize - 1 ) current = 0; changeItem(); break; case 13: //enter selectItem(); break; }}function changeItem(){ $("container").childNodes[current].className="over"; if( last >= 0 ) { $("container").childNodes[last].className="out"; }}function selectItem(){ $("ice").value = $("container").childNodes[current].innerHTML; $("container").style.visibility='hidden'; last = current = -1;}</script><style>#container{ margin:0; border:1px solid #000; width:150px; visibility:hidden; position:absolute;}#container li{}.over{ background:#08246B; color:#FFF;}.out{ background:#FFF; color:#000;}</style><input type="text" id="ice" onpropertychange="autoComplete(this.value)"/><ul id="container"></ul> 非常谢谢上面的朋友,但是有个问题我的数据是从数据库读取的 可能是上千上W条我不可能在预先存进一个JS数组,只能是用户先输入一个大类编号比如01 ,敲回车,然后显示出01下面所有的类别的信息,用户再加以选择 取数据库的话就要用AJAX了。数据传输可以用xml格式server端要根据分类生成XML文件在客户端用js通过xmlhttp接收xml数据,再做显示处理。 这个还是ajax,或者直接写成xml数据岛,给select绑定 ice_berg16(寻梦的稻草人)谢谢你的指点能不能教教我怎么实现你说的:server端要根据分类生成XML文件在客户端用js通过xmlhttp接收xml数据,再做显示处理。最好给我个简单的例子我以前根本就没弄过ajax, 来帮忙看下这个问题,本人不是专业技术人员,前来求高人指教! 来请教js高手一个问题 JS的简单问题!在线等。。。 Ext 日期控件用法 看看我写的 老是不出来 面向对象的问题 如何获取js键值映射数组的length 如何在JS的相册的图片上加上文字,不要用PS的方法 梅子大人有空进来看看,帮帮忙 請問怎樣獲得一個字的ACSII碼 怎样用javascript让页面中某一img更换不同的图片??? 错误: 未结束的字符串常量 我传给javascript得函数得时候,字符含有单引号,就出错了
<script type="text/javascript">
var data = ["a", "ab", "ac", "abc", "b", "b1", "b2", "b123", "ice", "ice_berg","ice_berg16"];
var $ = document.getElementById;
function autoComplete(pattern){
if( pattern == "" )
{
$("container").style.visibility='hidden';
return;
}
var reg = new RegExp("^"+pattern);
reg.compile("^"+pattern);
var lis = [];
for(i=0;i<data.length;i++)
{
if( reg.test(data[i]) )
lis.push( "<li>"+data[i]+"</li>" );
}
if( lis.length > 0 )
{
$("container").innerHTML = lis.join("");
$("container").style.visibility='visible';
position($('container'), $('ice'));
}
else
$("container").style.visibility='hidden';
}function position(o,r){
or = r;
l = r.offsetLeft;
t = r.offsetTop;
while(r=r.offsetParent)
{
l += r.offsetLeft;
t += r.offsetTop;
}
o.style.left = l + "px";
o.style.top = (t + or.offsetHeight + 2 ) + "px";
}
var current = -1;
var last = -1;
document.onkeydown= function(){
itemSize = $("container").childNodes.length;
switch( event.keyCode )
{
case 38: //up
if( current >= 0 )
last = current;
current--;
if( current < 0 ) current = itemSize - 1;
changeItem();
break;
case 40: //down
if( current >= 0 )
last = current;
current++;
if( current > itemSize - 1 )
current = 0;
changeItem();
break;
case 13: //enter
selectItem();
break;
}
}function changeItem()
{
$("container").childNodes[current].className="over";
if( last >= 0 )
{
$("container").childNodes[last].className="out";
}
}
function selectItem()
{
$("ice").value = $("container").childNodes[current].innerHTML;
$("container").style.visibility='hidden';
last = current = -1;
}
</script>
<style>
#container{
margin:0;
border:1px solid #000;
width:150px;
visibility:hidden;
position:absolute;
}
#container li{
}
.over{
background:#08246B;
color:#FFF;
}
.out{
background:#FFF;
color:#000;
}
</style><input type="text" id="ice" onpropertychange="autoComplete(this.value)"/>
<ul id="container"></ul>
数据传输可以用xml格式server端要根据分类生成XML文件在客户端用js通过xmlhttp接收xml数据,再做显示处理。