如何从禁用的<input>元素获取表单值

35 html javascript xhtml

表单的HTML标准似乎是禁用的输入元素不对表单名称/值集合做出贡献.

有没有办法解决这个问题?我需要能够打开和关闭禁用,但仍然返回提交表单时的值.

我意识到我可以使用JavaScript在提交表单之前将值复制到隐藏的输入,但我不愿意.有更干净的方式吗?

我正在使用ASP.NET,而不是那么重要.

lev*_*vik 84

你应该使用readOnly旗帜而不是disabled.用户无法编辑只读字段,但仍会随表单一起提交.

<input type="text" value="blah" readonly="true"/>
Run Code Online (Sandbox Code Playgroud)

  • 根据 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#readonly,这只适用于文本输入,不适用于其他控件 (4认同)
  • readOnly 不适用于复选框。如何获取禁用复选框的值? (2认同)

Way*_*yne 20

表单的HTML标准似乎是禁用的输入元素不对表单名称/值集合做出贡献.

那是正确的.

HACK:您可以在提交时使用Javascript:

  1. 未设置已禁用
  2. 只读设置
  3. 提交!


ken*_*bec 9

如果您只读取值,而不是禁用它,则字段的名称/值将与其余的非禁用字段一起发送.

使readonly字段的焦点事件处理程序将焦点传递给下一个符合条件的字段,使其更像是一个禁用元素.有些浏览器可以让你集中精力并选择只读字段,有些浏览器甚至可以让你粘贴到只读字段,尽管它们会恢复到原始值onblur和onchange.

<input type="text" value="" readonly="readonly">
Run Code Online (Sandbox Code Playgroud)


bob*_*nce 8

作为Wayne骇客的一个稍微强大的变种(可能会被后退按钮推动混淆),当禁用控件时:设置readonly= trueclassName= 'disabled'不是disabled= true,然后样式.disabled看起来类似于禁用字段.


ins*_*ite -1

你可以使用Visible=falseand/orReadOnly=true代替 吗Enabled=false

如果您使用该控件,您不应该真正设置Enabled=false?