我用ajax实现的有自动完成功能的textbox,用的是lookup.js;可是一个页面中放两个textbox只能有一个具有自动完成功能,另外一个就和一般的textbox一样,大家遇到这种情况吗,如何解决啊

解决方案 »

  1.   

    js主要完成下拉列表的绘制,选中触发的事件等功能,部分主要函数如下 
    function InitQueryCode (queryFieldName, hiddenDivName) 

    // 指定文本输入框的onblur 和 onkeydown 响应函数 
    queryField = document.getElementById(queryFieldName); 
    queryField.onblur = hideDiv; 
    queryField.onkeydown = keypressHandler; // 设置 queryField 的 autocomplete 属性为"off" 
    queryField.autocomplete = "off"; 
    // 如果没有指定的hiddenDivName,取默认值"querydiv" 
    if (hiddenDivName) 

    divName = hiddenDivName; 

    else 

    divName = "querydiv"; 
    } // IFrame 的 name 
    ifName = "queryiframe"; // 100ms后调用mainLoop()函数 
    setTimeout("mainLoop()", 100); 
    } /** 
    获取下拉区的div,如果没有则创建 
    */ 
    function getDiv (divID) 

    if(!globalDiv) 

    // 如果div 在页面中不存在,创建一个新的div 
    if(!document.getElementById(divID)) 

    var newNode = document.createElement("div"); 
    newNode.setAttribute("id",divID); 
    document.body.appendChild(newNode); 
    } // globalDiv设置为div 的引用 
    globalDiv = document.getElementById(divID); // 计算div左上角的位置 
    var x = queryField.offsetLeft; 
    var y = queryField.offsetTop + queryField.offsetHeight; 
    var parent = queryField; 
    while (parent.offsetParent) 

    parent = parent.offsetParent; 
    x += parent.offsetLeft; 
    y += parent.offsetTop; 
    } // 如果没有对div 设置格式,则为其设置相应的显示样式 
    if(!divFormatted) 

    globalDiv.style.backgroundColor = DIV_BG_COLOR; 
    globalDiv.style.fontFamily = DIV_FONT; 
    globalDiv.style.padding = DIV_PADDING; 
    globalDiv.style.border = DIV_BORDER; 
    globalDiv.style.width = DIV_WIDTH; 
    globalDiv.style.fontSize = DIV_FONTSIZE; 
    globalDiv.style.position = "absolute"; 
    globalDiv.style.left = x + "px"; 
    globalDiv.style.top = y + "px"; 
    globalDiv.style.visibility = "hidden"; 
    globalDiv.style.zIndex = 10000; divFormatted = true; 

    } return globalDiv; 
    } /** 
    根据返回的结果集显示下拉区 
    */ 
    function showQueryDiv (resultArray) 

    // 获取div 的引用 
    var div = getDiv (divName); // 如果div中有内容,则删除 
    while (div.childNodes.length > 0) 

    div.removeChild(div.childNodes[0]); 

    // 依次添加结果 
    for (var i = 0; i < resultArray.length; i++) 

    //每一个结果也是一个div 
    var result = document.createElement("div"); 
    // 设置结果div的显示样式 
    result.style.cursor = "pointer"; 
    result.style.padding = "2px 0px 2px 0px"; 
    // 设置为未选中 
    _unhighlightResult(result); 
    // 设置鼠标移进,移出等事件响应函数 
    result.onmousedown = selectResult; 
    result.onmouseover = highlightResult; 
    result.onmouseout = unhighlightResult; // 结果的文本是一个span 
    var result1 = document.createElement("span"); 
    // 设置文本span的显示样式 
    result1.className = "result1"; 
    result1.style.textAlign = "left"; 
    result1.style.fontWeight = "lighter"; 
    result1.innerHTML = resultArray[i]; // 将span添加为结果div的子节点 
    result.appendChild(result1); // 将结果div添加为下拉区的子节点 
    div.appendChild(result); 
    } // 如果结果集不为空,则显示,否则不显示 
    showDiv(resultArray.length > 0); 
    } InitQueryCode函数只能在 <body>中onload(),问题是否出在这儿? 
    <body MS_POSITIONING="GridLayout" onload="javascript:InitQueryCode('textbox的id')">
      

  2.   

    InitQueryCode('textbox1的id');
    InitQueryCode('textbox2的id');
      

  3.   

     .net 2.0中有自带的ajax控件中有此功能啊,只要都放在UpdatePanne中OK了吧....
      

  4.   

    to:jxnchk  这样我试过不行.
    to:zhiguo2008 我用的是vs2003 .net1.1