繁体   English   中英

如何从残疾人那里获取表单值<input>元素

[英]How can I get the form value from a disabled <input> element

forms 的 HTML 标准似乎使得禁用的输入元素对表单名称/值集合没有贡献。

有什么办法可以解决这个问题吗? 我需要能够打开和关闭禁用,但仍然返回提交表单时的任何值。

我意识到我可以在提交表单之前使用 JavaScript 将值复制到隐藏输入,但我不希望这样做。 有没有更清洁的方法?

我正在使用 ASP.NET,没关系。

您应该使用readOnly标志而不是disabled 只读字段不能由用户编辑,但仍与表单一起提交。

<input type="text" value="blah" readonly="true"/>

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

那是正确的。

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

  1. 取消设置已禁用
  2. 设置为只读
  3. 提交!

如果您将该值设为 readonly ,而不是禁用它,该字段的名称/值将与其余非禁用字段一起发送。

使只读字段的焦点事件处理程序将焦点传递给下一个符合条件的字段,使其更像一个禁用元素。 一些浏览器允许您聚焦并选择只读字段,有些甚至允许您粘贴到只读字段中,尽管它们会恢复为 onblur 和 onchange 的原始值。

<input type="text" value="" readonly="readonly">

作为 Wayne hack 的一个稍微更健壮的变体(可能会被后退按钮按下),禁用控件时:设置readonly= trueclassName= 'disabled'而不是disabled= true ,然后样式.disabled看起来类似于一个残疾人领域。

我创建了一个快速(仅限 Jquery)插件,在禁用输入时将值保存在数据字段中。 这只是意味着只要使用 .prop() 或 .attr() 通过 jquery 以编程方式禁用该字段...然后通过 .val()、.serialize() 或 .serializeArra() 访问该值将始终返回即使禁用也有价值:)

https://github.com/Jezternz/jq-disabled-inputs

您可以轻松地

  1. 将状态更改为正常(禁用=假)
  2. 读取值
  3. 将输入状态重置为禁用

    $(element).prop("disabled", false); var text = $(element).val(); $(element).prop("disabled", true)

一个小变种,设置readonly标志,然后使用 css 将此添加到输入元素

.read_only_input {
background: #efefef; /* to look like disabled */
pointer-events: none; /* to avoid focus on input */

}

它的简单只有两步

  1. 检查您要访问的输入是否被禁用,然后删除其“禁用”属性

  2. 获取该值,然后再次添加禁用属性。

我想这是一个黑客,但似乎对我来说效果很好。 两者都做! 用户看到禁用的输入、清晰的幻影和浏览器阻止交互 - 但它没有与表单一起提交。 用户看不到潜在的令人迷惑的只读字段,但它与表单一起提交。

<input name="mode_d" size="8" value="mode" disabled>
<input name="mode"            value="mode" hidden readonly>

您可以使用Visible=false和/或ReadOnly=true而不是Enabled=false吗?

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

而不是将字段设置为禁用将只读属性设置为“只读”,如下所示。

readonly=readonly

这将在表单提交中发送您的字段值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM