禁用输入的值将不会提交


Answers:


189

是的,所有浏览器都不应该提交禁用的输入,因为它们是只读的。

更多信息(第17.12.1节)

属性定义

禁用[CI]为表单控件设置时,此布尔属性禁用该控件以供用户输入。设置后,禁用属性对元素具有以下影响:

  • 禁用的控件不会获得焦点。
  • 在选项卡导航中会跳过禁用的控件。
  • 禁用的控件无法成功。

以下元素支持禁用的属性:BUTTON,INPUT,OPTGROUP,OPTION,SELECT和TEXTAREA。

该属性是继承的,但是本地声明会覆盖继承的值。

禁用元素的呈现方式取决于用户代理。例如,某些用户代理“禁用”了禁用的菜单项,按钮标签等。

在此示例中,INPUT元素被禁用。因此,它无法接收用户输入,也不会与表单一起提交其值。

<INPUT disabled name="fred" value="stone">

注意。动态修改Disabled属性值的唯一方法是通过脚本。


86
解决方法:添加<input type="hidden">与禁用的输入具有相同名称/值的元素。
约翰·库格曼

关于哪个浏览器可以使用以及哪个浏览器不遵守的任何信息?
Allisone

82
使用只读=“只读”,而不是:)看到stackoverflow.com/questions/7357256/...
阿德里安成为

1
@Allisone:Firefox和Chrome似乎遵守了此要求(未提交禁用的输入)。没有在其他浏览器上尝试过。
Adrien Be

1
@JohnKugelman为什么同名?残障人士一律不予提交。.最好为隐藏的残障人士提供真实姓名,并为残障人士使用其他名称
Arth 18'Oct

286

disabled 输入将不会提交数据。

使用readonly属性:

<input type="text" readonly />

来源在这里


@FrankFang,好的,但是,当我将数据传递给Laravel Collective的刀片模板时。它不会工作。无法以这种方式发送数据。
ssi-anik

@ ssi-anik readonly有效,只需确保将“名称” attr传递给输入即可。
BenNov

26

您可以使用三件事来模拟残疾人:

  1. HTML:readonly属性(这样,输入中存在的值可用于表单提交。用户也无法更改输入值)

  2. CSS :( 'pointer-events':'none'阻止用户单击输入)

  3. HTML :(tabindex="-1"阻止用户导航至键盘输入)


22

他们不会被提交,因为这就是W3C规范中所说的

17.13.2成功的控制

成功的控件对于提交是“有效的”。[片段]

  • 禁用的控件无法成功。

换句话说,规范说禁用的控件被认为是无效的,不应提交。


2

Disabled控件不能成功,成功的控件对于提交是“有效的”。这就是禁用的控件不与表单一起提交的原因。


1

有两个属性,即readonlydisabled,可以进行半只读输入。但是它们之间有微小的区别。

<input type="text" readonly />
<input type="text" disabled />
  • readonly属性使您的输入文本被禁用,并且用户无法再对其进行更改。
  • disabled属性不仅会使您的输入文本被禁用不可更改),而且也无法提交它

jQuery方法(1):

$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);

jQuery方法(2):

$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");

JavaScript方法:

document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;

PS disabledreadonly是标准的html属性。prop引入jQuery 1.6


0

即使在只读属性上,选择控件仍可单击

如果您仍要禁用该控件,但要发布其值。您可以考虑创建一个隐藏字段。与您的控件具有相同的值。

然后在选择更改时创建一个jQuery

$('#your_select_id').change(function () {
    $('#your_hidden_selectid').val($('#your_select_id').val());
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.