【发布时间】:2015-01-10 13:26:29
【问题描述】:
所以,在我当前的 ASP.net 应用程序中,我遇到了一个奇怪的错误。我在现有页面中添加的文本框在回发后进入只读模式。当页面第一次加载时,文本框工作正常。但在页面加载后,它保持启用并处于只读模式。
我在 IE 中检查了开发工具,并且文本框的只读属性设置为 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>
附:请告诉我,我可以在这里发布哪些代码。
编辑:页面加载结束时调用的 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 中删除了所有只读提示。还是同样的问题。此外,文本框正在正确启用,在更改下拉列表时,会正确设置值。我什至可以单击文本框来设置焦点,但我无法更改其中的值。
编辑 3:
程序工作流程说明: 用户从列表页面中选择一条记录,页面加载有关该记录的信息。用户可以输入数据并保存。但是用户不能在不提供 cmets 的情况下将完成标志设置为 yes。在其他情况下,根本不需要评论。此文本框用于添加 cmets。通常用户更新所有数据,并保存信息。保存信息后,页面刷新,此时用户更改完成标志。因此,在下拉更改和页面加载时,我检查完成标志并启用和禁用 cmets 文本框。
就逻辑而言,这一切都很好。只有当用户第一次保存数据并重新加载页面时,即使用户更改完成标志,文本框仍保持只读状态。如果用户再次刷新页面,则代码可以正常工作。基本上,这个错误会导致用户在每次保存后手动刷新页面,从而破坏了从代码刷新的目的。
【问题讨论】:
-
您显示的是标签而不是文本框
-
对不起。不知何故,代码标签搞砸了。
-
好的,尝试完全删除只读属性并发布您的页面加载代码
-
我想我知道问题出在哪里,这条线正在执行,所以 strCompletion 不是 Y 在回发
document.getElementById("txtResTimeDescription").disabled = true; -
Readonly 属性使某些内容只存在于那里就成为只读的——没有值设置。它需要被删除。
标签: javascript c# asp.net