我有两个单选按钮和两个文本框。当我点击第一个复选框时,两个texbox都不应该是只读的。但是当我选择第二个单选按钮时,它应该只显示两个文本框。我用谷歌搜索并找到了许多解决方案,但不知道为什么没有一个在我的代码中没有工作。 HTML:
<asp:RadioButton ID="mailNew" Text="New" runat="server" GroupName="mail_select" onclick="showHide(1)" ClientIDMode="Static" /><br />
<asp:RadioButton ID="mailExisting" Text="Existing" runat="server" GroupName="mail_select" onclick="showHide(2)" ClientIDMode="Static" />
<asp:TextBox ID="txtPromotion" runat="server" Width="77px" ></asp:TextBox><br />
<asp:TextBox ID="txtSubject" runat="server" Width="288px"></asp:TextBox><br />
使用Javascript:
function showHide(val) {
var txtpid=document.getElementById(<% = txtPromotion %>)
var txtsub= document.getElementById('<% = txtSubject.ClientID %>');
if (val == 2) {
txtpid.readOnly = false;
txtsub.readOnly = false;
}
if (val == 1) {
txtsub.setAttribute("readOnly.true");
txtpid.setAttribute("readOnly,true");
}
}
答案 0 :(得分:0)
我看到两个问题:
您未ClientID
使用txtPromotion
。
您使用不正确的属性名称调用setAttribute
且根本没有值。
只需在代码中使用反射属性:
function showHide(val) {
var txtpid=document.getElementById('<% = txtPromotion.ClientID %>')
var txtsub= document.getElementById('<% = txtSubject.ClientID %>');
if (val == 2) {
txtpid.readOnly = false;
txtsub.readOnly = false;
}
else if (val == 1) {
txtsub.readOnly = true;
txtpid.readOnly = true;
}
}
请注意,您的代码假定val
永远不会是1
或2
以外的任何内容,因为它不会更新readOnly
,除非它这两个价值观之一。考虑到这一点,这可能更清洁:
function showHide(val) {
document.getElementById('<% = txtPromotion.ClientID %>').readOnly = val == 1;
document.getElementById('<% = txtSubject.ClientID %>').readOnly = val == 1;
}