文本框在回发时变为只读,即使手动将只读属性设置为 false

本文关键字:false 设置 只读属性 只读 文本 | 更新日期: 2023-09-27 18:37:10

所以,在我目前 ASP.net 的应用程序中,我有一个奇怪的错误。我在现有页面中添加的文本框在回发后进入只读模式。首次加载页面时,文本框工作正常。但在页面加载后,它会保持启用状态并处于只读模式。

我检查了IE中的开发工具,文本框的只读属性设置为false,正如预期的那样。我甚至可以从页面加载期间调用的 js 函数设置其他属性,它们工作正常。只有只读属性不起作用。

我无法找出为什么会发生这种情况的原因,所以我也无法解决它。

 <tr>  <td nowrap align="right"> <asp:Label ID="lblResTimeDescription" runat="server" EnableViewState="False" CssClass="Common">Response Time Comments</asp:Label>&nbsp;:&nbsp;</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:

程序工作流程说明:用户从列表页面中选择一条记录,页面将加载有关该记录的信息。用户可以输入数据,并保存相同的数据。但是,如果不提供注释,用户无法将完成标志设置为 yes。在其他情况下,根本不需要注释。此文本框用于添加注释。通常,用户更新所有数据,并保存信息。保存信息后,页面将刷新,此时用户将更改完成标志。因此,在下拉列表更改和页面加载时,我检查完成标志并启用和禁用注释文本框。

就逻辑而言,这一切都很好。唯一的问题是当用户第一次保存数据并重新加载页面时,即使用户更改完成标志,文本框也保持只读。如果用户再次刷新页面,则代码工作正常。基本上,此错误会导致用户在每次保存后手动刷新页面,从而破坏了从代码刷新的目的。

文本框在回发时变为只读,即使手动将只读属性设置为 false

尝试在第一次

在代码后面完成您需要的内容之前放置它

txtResTimeDescription.Attributes.Remove("readonly");

如果你在拿走这个文本框时放只读属性

终于找到了解决方案。我仍然不知道为什么会发生这种情况。但是下面的代码做到了。

        document.getElementById("txtResTimeDescription").setAttribute("readOnly", false);

我之前也使用相同的代码,遗憾的是属性的大写错误。

相关文章: