禁用表单元素的 POST 值
Posted
技术标签:
【中文标题】禁用表单元素的 POST 值【英文标题】:POST values of disabled form elements 【发布时间】:2011-12-09 23:29:21 【问题描述】:我有一个表单,我需要在其中禁用一组复选框和一些字段,以便用户无法更改/更改其值。但是,当我提交表单时,禁用元素的 POST 值丢失/为空。如果没有这个问题,我该如何管理我正在尝试做的事情?
现在我通过禁用容器 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;
【问题讨论】:
请停止标记你的标题。 【参考方案1】:嗯,我能想到 3 个解决方案:
通过将readonly
属性添加到元素使其成为readonly
。
在 CSS/javascript 中禁用它们。为它着色,就像它被禁用一样,并且不允许使用 JavaScript 进行编辑,
保持禁用状态,并在提交时移除禁用状态。
任你选:)
【讨论】:
如何在提交时删除禁用? 我编写了一个小脚本,它循环遍历所有表单元素并在提交表单时启用它们。谢谢!【参考方案2】:您可以使用readonly
而不是disabled
,这对于用户来说几乎是相同的(不能编辑),但是readonly
-元素的值会被提交,而disabled
的值不会。
请注意,在 readonly 和 disabled 之间有 some other differences,这可能会给您带来其他问题:
禁用属性
禁用的表单元素的值不会传递给处理器方法。 W3C 称这是一个成功的元素。(这类似于 形成未选中的复选框。) 某些浏览器可能会覆盖或为禁用的表单元素提供默认样式。 (灰色或浮雕文本)Internet Explorer 5.5 是 对此特别讨厌。 禁用的表单元素不会获得焦点。 在标签导航中跳过禁用的表单元素。只读属性
并非所有表单元素都具有只读属性。最值得注意的是, 、 和 元素没有 readonly 属性(虽然你都有禁用的属性) 浏览器不提供表单元素为只读的默认覆盖视觉反馈。 (这可能是个问题……见下文。) 带有只读属性集的表单元素将被传递给表单处理器。 只读表单元素可以接收焦点 只读表单元素包含在选项卡式导航中。
【讨论】:
【参考方案3】:来回发送相同的数据没有多大意义。
只需留在服务器端,然后在提交时使用它。
另外,假设
用户不能改变/改变他们的价值观。
很傻。
【讨论】:
它是一个表单,我需要根据不同组的用户类型进行一些预定义的选择,因此字段必须可见但未启用。 我不是在谈论客户端的可见性。我说的是服务器端,它已经有了这些值 - sdo,再次发送它们绝对没有意义。关于用户无法更改值的愚蠢假设 我来这里是为了寻找一种将禁用数据发送到服务器的解决方案,而事实上我根本不需要这样做,更简单的解决方案。谢谢 我遇到的问题是表单的一部分应该由 javascript 生成,其值是用户在表单之外选择的值。用户单击“添加到表单”按钮后,选定的值在添加到表单后不应再次更改,但必须提交,因为服务器端必须知道此生成的字段名和值。因此 readonly 是完美的方式!【参考方案4】:你可以使用“只读”而不是禁用,这应该有想要的效果
您还可以使用 javascript 提交表单,并预先提交取消禁用(启用 :P)各个字段?
【讨论】:
以上是关于禁用表单元素的 POST 值的主要内容,如果未能解决你的问题,请参考以下文章