/// <summary>
        /// 设置当前页面上的所有可输入和选择的控件为只读属性
        /// </summary>
        /// <param name="page"></param>
        public static void SetControlReadOnly(Page page)
        {            foreach (Control ctrl in page.Controls)
            {
                SetControlReadOnly(ctrl);            }
        }
        //递归调用。设置控件只读。
        public static void SetControlReadOnly(Control ctr)
        {
            if (ctr is TextBox)
            {
                TextBox txtControl = (TextBox)ctr;
                txtControl.ReadOnly = true;
                txtControl.Enabled = false;            }
            else if (ctr is RadioButton)
            {
                RadioButton btn = (RadioButton)ctr;
                btn.Enabled = false;            }
            else if (ctr is RadioButtonList)
            {
                RadioButtonList btn = (RadioButtonList)ctr;
                btn.Enabled = false;
            }            else if (ctr is CheckBox)
            {
                CheckBox cb = (CheckBox)ctr;
                cb.Enabled = false;
            }
            else if (ctr is DropDownList)
            {
                DropDownList list = (DropDownList)ctr;
                list.Enabled = false;
            }            else if (ctr is HtmlTextArea)
            {
                HtmlTextArea cb = (HtmlTextArea)ctr;
                cb.Attributes.Add("readonly", "");
                cb.Disabled = true;
            }
            else if (ctr is HtmlSelect)
            {
                HtmlSelect rb = (HtmlSelect)ctr;
                rb.Disabled = true;
            }            else if (ctr is HtmlInputCheckBox)
            {
                HtmlInputCheckBox rb = (HtmlInputCheckBox)ctr;
                rb.Disabled = true;
            }
            else if (ctr is HtmlInputRadioButton)
            {
                HtmlInputRadioButton rb = (HtmlInputRadioButton)ctr;
                rb.Disabled = true;
            }
            else if (ctr is HtmlInputText)
            {
                HtmlInputControl input = (HtmlInputControl)ctr;
                input.Attributes.Add("readonly", "");
                input.Disabled = true;
            }
            else
                foreach (Control ctr1 in ctr.Controls)
                {
                    SetControlReadOnly(ctr1);
                }
        }我在网上查到可以用上面的方法实现,但是怎么传一个page,比如我要控制test.jsp页面上所有控件只读,应该怎么实现?控件只读jspjava

解决方案 »

  1.   

    <script   language=javascript>   
    function   dis()   
    {   
            var   a   =   document.getElementsByTagName("input");   
            for   (var   i=0;   i<a.length;   i++)   
            {   
                  if   (a[i].type=="checkbox"   ||   a[i].type=="radio" || a[i].type=="text"|| a[i].type=="button")      a[i].readOnly=true;   
            }   
            var   b   =   document.getElementsByTagName("select");   
            for   (var   i=0;   i<b.length;   i++)   
            {   
                  b[i].readOnly=true;   
            }   
    }   
    </script>   
      

  2.   

    这段代码貌似是.net 的啊
    java类似的可以使用apache wicket实现
      

  3.   


    对于普通的页面可以,但是对于有些控件是动态生成的就不行,如:
    <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
             <%
             while (checkItemRs.next()) {
             %>
         <input type="checkbox" name="cyxm"  value="<%=checkItemRs.getString("categoryno")%>">
         <%=checkItemRs.getString("categoryname")%>
         
         <%
                }
               %>
             </td>
      

  4.   


    对于普通的页面可以,但是对于有些控件是动态生成的就不行,如:
    <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
             <%
             while (checkItemRs.next()) {
             %>
         <input type="checkbox" name="cyxm"  value="<%=checkItemRs.getString("categoryno")%>">
         <%=checkItemRs.getString("categoryname")%>
         
         <%
                }
               %>
             </td>
    直接把这个方法在onload里面调用,这是画面已经加载完成了。apache wicket这个是个框架,有兴趣的情况下可以了解一下
      

  5.   


    对于普通的页面可以,但是对于有些控件是动态生成的就不行,如:
    <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
             <%
             while (checkItemRs.next()) {
             %>
         <input type="checkbox" name="cyxm"  value="<%=checkItemRs.getString("categoryno")%>">
         <%=checkItemRs.getString("categoryname")%>
         
         <%
                }
               %>
             </td>
    直接把这个方法在onload里面调用,这是画面已经加载完成了。apache wicket这个是个框架,有兴趣的情况下可以了解一下
    不对吧,页面加载顺序首先是onload,然后是javascript,然后就是body,把刚刚你说的方法放在onload里面怎么行,而且我刚刚试了也是不行的。
      

  6.   

    是画面加载完成后才执行onload吧,要不就使用document.readyState != "complete"判断一下试试
      

  7.   

    我在onload方法里面alert(document.readyState);提示框信息:complete
      

  8.   

    我在onload方法里面alert(document.readyState);提示框信息:complete
    这就是画面加载完成了
      

  9.   

    我在onload方法里面alert(document.readyState);提示框信息:complete
    实在不行,把你的js 写在文档最下面。动态那些解析完成。
      

  10.   

    我在onload方法里面alert(document.readyState);提示框信息:complete
    实在不行,把你的js 写在文档最下面。动态那些解析完成。试过了,不行。
      

  11.   

    我改成用disabled了,谢谢各位的解答。