我有一个表单,我需要禁用一系列复选框和一些字段,以便用户无法更改/更改其值。当我提交表单时,禁用元素的POST值缺失/ null。如何在没有这个问题的情况下管理我正在尝试做的事情?
现在我通过禁用容器div来禁用字段:
#unselectable {
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
-o-user-select: none;
-webkit-user-select: none;
cursor:not-allowed;
}
答案 0 :(得分:23)
嗯,我能想到3个解决方案:
readonly
属性添加到元素中来使它们readonly
。选择:)
答案 1 :(得分:6)
您可以使用readonly
代替disabled
,但对于用户来说几乎是相同的(不能是编辑内容),但readonly
- 元素的值会在{{disabled
时提交1}}没有。
请注意,只读和禁用之间有some other differences,这可能会导致其他问题:
已禁用属性
- 禁用的表单元素的值不会传递给处理器方法。 W3C称这是一个成功的元素。(这类似于 表单未选中的复选框。)
- 某些浏览器可能会覆盖或为已禁用的表单元素提供默认样式。 (灰色或浮雕文本)Internet Explorer 5.5是 特别讨厌这件事。
- 已停用的表单元素无法获得焦点。
- 在标签导航中跳过已停用的表单元素。
只读属性
- 并非所有表单元素都具有只读属性。最值得注意的是,和,元素没有readonly 属性(虽然你的两个都有禁用属性)
- 浏览器不提供默认的重写视觉反馈,表单元素是只读的。 (这可能是一个问题......见下文。)
- 具有readonly属性集的表单元素将传递给表单处理器。
- 只读表单元素可以获得焦点
- 只读表单元素包含在选项卡式导航中。
答案 2 :(得分:2)
来回发送相同的数据没有多大意义。
只需离开服务器端,然后在提交时使用它。
此外,假设
用户无法更改/更改其值。
很傻。
答案 3 :(得分:0)
你可以使用“只读”而不是禁用,这应该有想要的效果
您还可以使用javascript提交表单,并预先提交un-disable(启用:P)各个字段?