所以,在我目前的ASP.net应用程序中,我有一个奇怪的错误。我在现有页面中添加的文本框,在回发后进入只读模式。当页面第一次加载时,文本框工作正常。但是在页面加载后,它将保持启用状态并处于只读模式。
我在IE中检查了Dev工具,并且文本框的readonly属性设置为false,如预期的那样。我甚至可以在页面加载期间调用的js函数中设置其他属性,它们工作正常。只有readonly属性不起作用。
我无法弄清楚为什么会发生这种情况,所以我也无法解决。
<tr> <td nowrap align="right"> <asp:Label ID="lblResTimeDescription" runat="server" EnableViewState="False" CssClass="Common">Response Time Comments</asp:Label> : </td>
文本框代码:
> <asp:TextBox ID="txtResTimeDescription" CssClass="TextBox"
> MaxLength="200" TextMode="MultiLine" runat="server" Width="100%"
> Height="50px" ReadOnly="false"></asp:TextBox>
P.S。请告诉我,我可以在这里发布哪些代码。
编辑:在页面加载结束时调用JS函数。
function fnEnableComments(e) {
var strCompletion = document.getElementById("ddlCompletion").value;
if (strCompletion == "Y") {
document.getElementById("txtResTimeDescription").disabled = false;
document.getElementById("txtResTimeDescription").setAttribute("value", "zyx");
document.getElementById("txtResTimeDescription").setAttribute("ReadOnly",false);
}
else {
document.getElementById("txtResTimeDescription").disabled = true;
document.getElementById("txtResTimeDescription").value = "";
}
}
正确调用此函数,因为我可以看到值更改为zyx。
编辑2:
从代码和js中删除了readonly的所有提示。仍然是同样的问题。此外,正确启用文本框,在更改下拉列表时,正确设置值。我甚至可以单击文本框来设置焦点,但我无法更改其中的值。
编辑3:
计划工作流程说明: 用户从列表页面中选择一条记录,页面加载有关该记录的信息。用户可以输入数据,并保存相同的数据。但是用户无法在不提供注释的情况下将完成标志设置为yes。在其他情况下,根本不需要评论。此文本框用于添加注释。通常,用户更新所有数据,并保存信息。保存信息后,页面刷新,此时用户更改完成标志。因此,在下拉列表更改和页面加载时,我检查完成标志并启用和禁用注释文本框。
就逻辑而言,这一切都很好。唯一的事情是当用户第一次保存数据和页面重新加载时,即使用户更改完成标志,文本框也会保持只读。如果用户再次刷新页面,则代码可以正常工作。基本上,这个错误会导致用户在每次保存后手动刷新页面,从而无法从代码中刷新目的。
答案 0 :(得分:1)
尝试在第一次在
背后的代码中完成您需要的内容之前放置它txtResTimeDescription.Attributes.Remove("readonly");
如果你拿走这个文本框时放入readonly属性
答案 1 :(得分:1)
终于找到了解决方案。我仍然不知道为什么会这样。但是在代码之下做了这个伎俩。
document.getElementById("txtResTimeDescription").setAttribute("readOnly", false);
我之前也使用了相同的代码,遗憾的是该属性的大小写错误。