所以,在我当前的 ASP.net 应用程序中,我有一个奇怪的错误。我在现有页面中添加的文本框在回发后进入只读模式。当页面第一次加载时,文本框工作正常。但页面加载后,它保持启用状态并处于只读模式。
我检查了 IE 中的开发工具,文本框的 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>
附注请告诉我,我可以在此处发布哪些代码。
编辑:在页面加载最后调用的 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:
程序工作流程说明: 用户从列表页面中选择一条记录,该页面会加载有关该记录的信息。用户可以输入数据并保存。但用户不能在不提供注释的情况下将完成标志设置为"is"。在其他情况下,根本不需要注释。该文本框用于添加注释。通常,用户更新所有数据并保存信息。保存信息后,页面刷新,此时用户更改完成标志。因此,在下拉列表更改和页面加载时,我检查完成标志并启用和禁用评论文本框。
就逻辑而言,这一切都很好。唯一的问题是,当用户第一次保存数据并且页面重新加载时,即使用户更改完成标志,文本框仍保持只读状态。如果用户再次刷新页面,则代码可以正常工作。基本上,这个错误会导致用户在每次保存后手动刷新页面,从而违背了从代码中刷新的目的。
最佳答案
尝试在第一次确定您需要的内容之前将其放置在后面的代码中
txtResTimeDescription.Attributes.Remove("readonly");
如果您在删除此文本框时设置只读属性,则使用此属性
关于javascript - 即使手动将 readonly 属性设置为 false,文本框也会在回发时变为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27872521/