我有一个禁用的文本框,我正在使用 JavaScript 在客户端编辑其值。当我尝试检索服务器端的值时,它不会反映在客户端所做的更改。如果我将文本框的启用属性设置为 true,我可以检索该值,但用户可以放置焦点并编辑文本框。
有没有一种明智的方法来阻止用户将焦点放在文本框上并对其进行编辑?
使用文本框的 ReadOnly 属性。
Edit:根据OP的评论,这可能不会成功。
Edit 2:来自 DotNetSlackers:
那么这些有什么区别
两个属性以及为什么两者都存在?
之间有两个区别
这两个属性,一个微不足道的
差异是一种微妙而深刻的差异:
- 这两个属性发出不同的标记。当您设置启用时
设置为 False,TextBox 会注入
属性disabled=“disabled”进入其
呈现的 HTML。当您设置
ReadOnly属性为True时,
属性 readonly="readonly" 是
注射。
- 根据 HTML 表单的 W3C 规范,禁用的控件不是
“成功”,而只读控件
可能会“成功”。一个成功的”
控制是一个其名称/值对
通过发送回浏览器
POST 标头或查询字符串。
因此,禁用的控件不是
发送回 ASP.NET 页面,同时
只读控件可能是,具体取决于
在用户代理上。 (在我的测试中,两者
IE 6 和 FireFox 1.5 一起发送
只读文本框输入。)
......
如果您在以下情况遇到此问题
您可能拥有 ASP.NET 版本 1.x
找到TextBox的ReadOnly属性
并使用它而不是设置
启用为 False。你仍然可以拥有
页面的 ViewState 被禁用并设置
只读 TextBox Web 控件的文本
以编程方式属性,因为
TextBox 值通过
表单提交为只读
控制。但是,在 ASP.NET 版本中
2.0,事情发生了一点变化,正如 Rick Strahlin 在他的博客文章中所指出的那样
ASP.NET 2.0 只读行为更改
当 EnableViewState 为 false 时。和
2.0,TextBox控件的ReadOnly属性的行为发生了变化
轻微地。来自技术文档:
ReadOnly 属性设置为 true 的 TextBox 控件的 Text 值在发生回发时发送到服务器,但服务器不对只读文本框进行处理。这可以防止恶意用户更改只读文本值。除非被服务器端代码修改,否则 Text 属性的值将保留在回发之间的视图状态中。
发生的情况是客户端发送
沿着只读的值
TextBox通过表单值,但是
ASP.NET 2.0 引擎不采取
该值并将其分配给文本
回发时 TextBox 的属性
帮助防止恶意用户
更改只读 TextBox 值
他们自己。但这让我们回到
我们之前的问题 - 如果值
未在回发中指定(或者是
在本例中被忽略)和 ViewState
被禁用,该值将丢失。
哎呀。
Rick 的解决方法是手动
从请求中读取值
标头(此 .TextBox1.Text =
请求[this.TextBox1.UniqueID];),
这会带来安全风险并且
引入了2.0的问题
地址。最佳方法是
重新从数据库中查询值
(或者无论您最初获得
以编程方式设置的值
只读文本框)。
这篇博文的寓意是,如果
您有可以使用的只读数据
禁用或只读形式
领域,这真的不重要
无论您是否收到回
表单中表单字段的值
意见书。应该没关系
因为你不应该
信任/使用该数据开始
和!如果您有只读数据,
不要从数据流中重新读取它
最终用户可以修改!
Source
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)