以JSon来实现TextBox可选择可输入

     这里只是把主要的代码贴出来,不再进行过多的说明,重要的地方以注释的方式进行说明。
    <div id="pubDiv" style="background-position: #9999FF; font-size:12px; display:none; z-index:0; overflow:auto; position:absolute; border:#EDEDED 0px solid;background:#EDEDED;"></div>
    <script type="text/javascript" language="javascript">
      // 注意下面的等号右面,不能是“<%=BuildJson() %>”,因为JSon整体不能是字符串,同时最后也不能加分号:“;”
        var strJson = <%=BuildJson() %>
       
        function ShowBdzDiv() {
            var dept = document.getElementById("<%=ddlDeptEdit.ClientID %>").value;
            // 构建要下拉选择的内容
            var strHtml = "<table border=0px cellpadding=0  cellspacing=0 width=120px><tr>";
            for (var key in strJson[dept]) {
                strHtml += "<tr><td onclick=SetBdz()>" + key + "</td></tr>";
            }
            strHtml += "</table>";
            var oBdz = document.getElementById("<%=txtBdz.ClientID %>");
            var oDiv = document.getElementById("pubDiv");
            oDiv.innerHTML = strHtml;

            // 设置显示的位置,并显示
            oDiv.style.top = "99px";
            oDiv.style.left = "100px";
            oDiv.style.display = "block";

        }
        // 当点击选择一个内容时
        function SetBdz() {
            var oBdz = document.getElementById("<%=txtBdz.ClientID %>");
            // 把选择内容设置到TextBox上,并隐藏下拉选择项
            oBdz.value = event.srcElement.innerText;
            HiddenDiv();
        }
        // 隐藏下拉选择项
        function HiddenDiv() {
            var oDiv = document.getElementById("pubDiv");
            oDiv.style.display = "none";
        }
    </script>
。。。
<!--这里只有一点要注意:设置AutoCompleteType="Disabled"-->
<asp:TextBox ID="txtBdz" AutoCompleteType="Disabled" onfocus="ShowBdzDiv()" runat="server"></asp:TextBox>

这里要说明的是,这里只实现了下拉选择项的点击选择,不能使用键盘操作。


本文转自我的163的博客。为了让自己的技术经验有更多的人分享,我会逐步把163的文章转到本博。

posted on 2009-04-18 10:03  常绍新  阅读(3059)  评论(8编辑  收藏  举报