2010-02-19 30 views
2

我有一个Web应用程序,其中禁用了字段。它允许“另存为”功能,这基本上意味着可以将设置复制到新配置中(不需要修改),并且在新配置中可以将其更改为其他设置。我遇到的问题是,由于这些字段被禁用,它们没有通过发布,也没有出现在服务器端的上下文对象中。ASP.NET 3.5 - 使字段只读/不可修改而不“禁用”它

当我删除逻辑来禁用字段时,该部分工作正常。所以剩下的问题是,如何在没有真正“禁用”它们的情况下“禁用”字段(不允许任何输入字段中的数据的任何改变)(以便数据在保存时被发布)?

我最初正在寻找一种方法来做到这一点在CSS中,但不知道它是否存在。最好的解决方案当然是最简单的解决方案。提前致谢! (注意:通过'禁用'我的意思是“文本框显示,但它们中的文本都不能被修改”,在点击它的时候光标是否出现并不重要,但如果我有一个偏好,这将是没有光标...)

回答

3

http://www.w3schools.com/TAGS/att_input_readonly.asp readonly属性是你想要的。

+0

完美......它正盯着我脸上:)我只是循环以前被禁用的元素,而不是添加attr只读,它的工作原理。在JQuery中它看起来像: // disable($(this)); (旧) $(this).attr(“只读”,“只读”); (NEW) – n2009 2010-02-19 17:49:44

+0

必须爱简单的 – 2010-02-19 18:11:32

+0

@ n2009 - 所以对于使用不支持JS的屏幕阅读器来更改这些字段的用户来说没关系。我希望你也在做一些服务器端验证,以确保它们已被更改。 – tvanfosson 2010-02-19 18:43:13

1

我会建议,而不是从页面的输入中使用不可更新的字段值,你从数据库检索原始对象,并从那里复制它们。使用Firebug之类的东西来修改表单将被重新发布以修改值的页面内容是很平凡的,即使它们被标记为只读。既然你真的想从原来的值,我会简单地重新获取对象并复制它们。那么你不必担心原始(和不可更新的)属性是否被重新发布。

+0

您甚至不需要Firebug。这可以通过任何标准的浏览器地址栏来完成。 – 2010-02-19 18:11:39

+0

我只是给了一个微不足道的方法来做到这一点,而不是列举所有的微不足道的方法。 – tvanfosson 2010-02-19 18:40:50

相关问题