【发布时间】:2015-02-25 22:24:41
【问题描述】:
我之前遇到过这样的现象,如果<input>标签有CSS属性display: none,那么它的值不会和它的父表单一起提交。我现在处于这种行为有帮助的奇怪情况!
我可以依靠display: none 来防止在提交表单时包含输入,还是在技术上与规范有偏差?
编辑:到目前为止的答案都集中在其他方法上,以及后端验证的必要性,所以让我说清楚;我知道这是一种有点奇怪的做事方式,而且我知道我需要在后端进行验证。我已经是;只是我返回的参数的格式使我的处理的一个特定方面有点棘手。
为了更清楚地重新表述这个问题:是否有可靠的 CSS 内方法来防止输入包含在其表单中?似乎将字段的 display 设置为none 有效,但我无法判断它是否应该有效。我不关心用户可能编辑前端 HTML / CSS,因为我会在后端捕捉到它。您可以假设一个非恶意用户。
【问题讨论】:
-
如果你想禁用输入,为什么不直接使用
<input type="input" disabled>? -
@DanielWilliams - 这很容易被覆盖,即如果您有萤火虫,只需删除此属性即可启用输入(无数种方式之一)。永远不要相信用户输入,确保在后端也禁用输入。
-
我为什么要这样做?我有一个二维单选按钮数组 - 只能选择一个,但哪一个控制两个概念上不同的值。我目前正在使用串联的值作为无线电输入值;但我正在考虑使用复选框来选择性地
display: none一对隐藏输入。 -
@dwhite.me - 别担心,这一切都在后端得到验证 :)
-
@dwhite.me 这不是一个很好的论点.. 因为如果用户打开 firebug 以删除
disabled他们可以很容易地取消选中display:none旁边的复选框...添加 @ 987654330@ 是禁用输入的跨浏览器标准。