asp.net - 使用 HTML 'readonly="readonly "' vs. JavaScript ' element.readOnly = true;' 的奇怪行为

标签 asp.net javascript internet-explorer cross-browser readonly

一些背景

所以我正在完成一个网络应用程序的一些增强功能,该应用程序可以自动插入数据。用户填写了一些文本框,并且它们之间的其他文本框具有自动计算的值。接收自动计算值的文本框必须是只读的,以防止用户更改,但不能禁用,否则它们不会在回发时提交。每个文本框旁边都有一个复选框,因此用户可以有意识地选中它以使字段可写,从而允许他们覆盖插值。

浏览器:IE 7(不确定在其他浏览器中的表现如何)

问题

当设置readOnly时使用 JavaScript 的文本框的属性,文本框中的值通过表单提交:我可以在服务器端(ASP.NET)上使用 myTextBox.Text 看到它它位于 Request.Form("myTextBox") .

如果我设置ReadOnly="true"在我的<asp:TextBox />上元素并且不使用 JavaScript 方法,则文本框中的值不能可从 myTextBox.Text 获取。 (我假设它从未进入 ViewState ),但它正在以以下形式提交: Request.Form("myTextBox")有一个值。

我的问题

这到底是怎么回事?这是设计使然吗?这是浏览器问题吗?我发现错误了吗?令人烦恼的是,我必须有一些额外的 JavaScript 来在页面加载时首先禁用文本框的可写性,以使我的应用程序正常工作。

谢谢!

最佳答案

这是设计使然。作为 ASP.NET 安全功能,在服务器上将其设置为只读将使其保持只读状态,无论客户端上发生什么情况。如果您希望他们能够覆盖它并实际提交一个值,那么它在服务器上并不是真正的只读,而是在客户端上有条件地只读。您可以在他们选中复选框以更改服务器上的只读属性时进行回发,或者使用以下 ASP.NET 代码在客户端上仅设置只读属性:

MyControl.Attributes.Add("readOnly","readOnly")

关于asp.net - 使用 HTML 'readonly="readonly "' vs. JavaScript ' element.readOnly = true;' 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1060518/

相关文章:

c# - ASP.net FileUpload 损坏上传的文件

mysql - 为什么需要标识符?

javascript - 两个指令之间的 Angular 指令范围共享

javascript - window.location in IE base href

javascript - $(window).load() 在 IE 中?

javascript - Ext.net (ASP.NET) 中的上传完成事件?

asp.net - Entity Framework - 仅加载选定的属性

javascript - Python 的 "\x00"是否存在于 javascript 中?

javascript - 如何根据 ISO 6346 计算校验位

css - Firefox 或 Internet Explorer 中不显示关键帧中的背景图像