读书人

统制jsp页面所有控件只读(按钮、输入

发布时间: 2013-09-28 10:01:20 作者: rapoo

控制jsp页面所有控件只读(按钮、输入框等)

 /// <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页面上所有控件只读,应该怎么实现? 控件 只读 jsp java
[解决办法]
<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>

[解决办法]
这段代码貌似是.net 的啊
java类似的可以使用apache wicket实现
[解决办法]
引用:
Quote: 引用:

<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>



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

<%
}
%>
</td>



直接把这个方法在onload里面调用,这是画面已经加载完成了。apache wicket这个是个框架,有兴趣的情况下可以了解一下
[解决办法]
是画面加载完成后才执行onload吧,要不就使用document.readyState != "complete"判断一下试试
[解决办法]
引用:
Quote: 引用:

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

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

这就是画面加载完成了
[解决办法]
引用:
Quote: 引用:

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

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

实在不行,把你的js 写在文档最下面。动态那些解析完成。
[解决办法]
用jquery的$(document).ready()试试

读书人网 >J2EE开发

热点推荐