禁用表单元素的POST值

时间:2011-10-18 10:17:20

标签: php disabled-input

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

}

4 个答案:

答案 0 :(得分:23)

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

  • 通过将readonly属性添加到元素中来使它们readonly
  • 在CSS / JavaScript中禁用它们。将其标记为已禁用,并且不允许使用JavaScript进行编辑,
  • 将其禁用,并在提交时删除已停用。

选择:)

答案 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)各个字段?