7

我有一个表单,我需要在其中禁用一组复选框和一些字段,以便用户无法更改/更改其值。但是,当我提交表单时,禁用元素的 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; 

}
4

4 回答 4

26

好吧,我能想到3个解决方案:

  • readonly通过将readonly属性添加到元素来制作它们。
  • 在 CSS/JavaScript 中禁用它们。为它着色,就像它被禁用一样,并且不允许使用 JavaScript 进行编辑,
  • 将其禁用,并在提交时删除禁用。

随便挑吧:)

于 2011-10-18T10:21:06.837 回答
6

您可以使用readonly而不是disabledwich 对于用户来说几乎相同(不能编辑),但是 -elements 的值readonly会被提交,而disabled那些则不会。

请注意, readonly 和 disabled 之间还有一些其他差异,这可能会给您带来其他问题:

禁用属性

  • 禁用的表单元素的值不会传递给处理器方法。W3C 称这是一个成功的元素。(这类似于未选中的表单复选框。)
  • 某些浏览器可能会覆盖或为禁用的表单元素提供默认样式。(灰色或浮雕文本)Internet Explorer 5.5 对此特别讨厌。
  • 禁用的表单元素不会获得焦点。
  • 在选项卡导航中跳过禁用的表单元素。

只读属性

  • 并非所有表单元素都具有只读属性。最值得注意的是, , 和 元素没有只读属性(尽管它们都有禁用属性)
  • 浏览器不提供表单元素是只读的默认覆盖视觉反馈。(这可能是个问题……见下文。)
  • 带有只读属性集的表单元素将被传递给表单处理器。
  • 只读表单元素可以接收焦点
  • 只读表单元素包含在选项卡式导航中。
于 2011-10-18T10:20:41.313 回答
2

来回发送相同的数据没有多大意义。

只需留在服务器端,然后在提交时使用它。

此外,假设

用户无法更改/更改其值。

很傻。

于 2011-10-18T10:25:36.857 回答
0

您可以使用“只读”而不是禁用,这应该具有想要的效果

您还可以使用 javascript 提交表单,并预先提交取消禁用(启用:P)各个字段?

于 2011-10-18T10:20:31.550 回答