AJAX 自动完成,如何让下拉完成框显示在最上层,复盖掉表单提交框

UFOUFO777 2010-02-27 12:04:57
用AJAX做了个类似GOOGLE,BAIDU样式的自动完成功能,但是显示自动完成部分的时候老是在TABLE框内,结果把TABLE撑向下了,如何让下拉显示层自动复盖INPUT所在的TABLE呢。也就是下拉的时候,下面的东西不移动,只是让下拉框给盖住就行了。就象百度上面的一样
ajax部分
function createAjaxObj(){
var httprequest=false;
if (window.XMLHttpRequest) //为非IE浏览器生成XmlHttpRequest对象
{
httprequest=new XMLHttpRequest()
if (httprequest.overrideMimeType)
httprequest.overrideMimeType('text/xml')
}
else if (window.ActiveXObject) //为IE浏览器生成XmlHttpRequest对象
{
try {
httprequest=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
return httprequest
}
var searchReq = createAjaxObj();
function getUsername() {
if (searchReq.readyState == 4 || searchReq.readyState == 0) {
var str=document.getElementById("username").value; //获取参数
str=encodeURI(str);
var url="checkusername.jsp";
var username="username="+str;
searchReq.open("POST",url,true); //请求URL
searchReq.onreadystatechange=backusername; //状态触发事件(服务器作出响应后才执行)
searchReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
searchReq.send(username);
}
}
function backusername() { //这是回调函数,处理从服务器端返回的信息
if (searchReq.readyState == 4) {
var ss = document.getElementById('vusername')
ss.innerHTML = '';
var str = searchReq.responseText.split("\n");
for(i=0; i < str.length - 1; i++) {
var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
suggest += 'onmouseout="javascript:suggestOut(this);" ';
suggest += 'onclick="javascript:setUsername(this.innerHTML);" ';
suggest += 'class="suggest_link">' + str[i] + '</div>';
ss.innerHTML += suggest;
ss.style.display="block";
}
}
}
function suggestOver(div_value) {
div_value.className = 'suggest_link_over';
}
function suggestOut(div_value) {
div_value.className = 'suggest_link';
}
function setUsername(value) {
document.getElementById('username').value = value;
document.getElementById('vusername').innerHTML = '';
document.getElementById('vusername').style.display="none";
}
因为页面设计的关系,必需用到TABLE,
JSP页面部分
<form name="form1" action="insertsale.jsp" method=post onsubmit="return checkdata()">
<table cellspacing="0" cellpadding="0" border="0" class="talbe_list">

<tr>
<td class="left1"> 客户名称: </td>
<td class="left2">
<INPUT type="text" size=40 name="username" id="username" value='' onpropertychange="getUsername();" />

<div id="vusername" style="position:relative; background-color: #ffffff;border: 1px solid #000000;left: 1px;top: 1px;height: 74px;width: 170px;display:none; z-index:2000";></div>

</td>
</tr>

<tr>
<td colspan="2" align="center" style="height: 45px; border-bottom: 1px #CCCCCC solid;">
<INPUT type='submit' value='确定添加' name='submit'></td>
</tr>
</table>
</form>
...全文
122 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
archko 2010-02-28
  • 打赏
  • 举报
回复
position:relative;换成Absolute试试
justmove 2010-02-27
  • 打赏
  • 举报
回复
设置显示层css的z-index属性大于table的z-index即可
UFOUFO777 2010-02-27
  • 打赏
  • 举报
回复
看到有的是用iframe来完成的,可是具体的不知道如何写法

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧