【问题标题】:POST values of disabled form elements禁用表单元素的 POST 值
【发布时间】: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; 

}

【问题讨论】:

  • 请停止标记你的标题。

标签: php disabled-input


【解决方案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)各个字段?

    【讨论】:

      猜你喜欢
      • 2020-10-08
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多