257

这是我在 Firefox 中通过 Firebug 发现的。

其他浏览器也一样吗?

如果是这样,这是什么原因?

4

7 回答 7

337

disabledinput 不会提交数据。

使用readonly属性:

<input type="text" readonly />

来源在这里

于 2013-05-08T10:24:38.007 回答
215

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

更多信息(第 17.12.1 节)

属性定义

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

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

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

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

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

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

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

笔记。动态修改 disabled 属性值的唯一方法是通过脚本。

于 2009-08-31T04:03:36.853 回答
36

您可以使用三件事来模仿禁用:

  1. HTML:readonly属性(以便输入中存在的值可以用于表单提交。用户也不能更改输入值)

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

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

于 2018-04-26T21:39:28.263 回答
24

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

17.13.2 成功控制

一个成功的控件对于提交是“有效的”。[剪辑]

  • 禁用的控件不能成功。

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

于 2009-08-31T04:05:27.707 回答
6

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

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

jQuery方法(一):

$("#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;

PSdisabledreadonly是标准的 html 属性。propjQuery 1.6.

于 2020-04-29T08:36:54.287 回答
2

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

于 2015-01-08T11:05:13.373 回答
0

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

如果您仍想禁用该控件但您希望发布它的值。您可能会考虑创建一个隐藏字段。与您的控件具有相同的值。

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

$('#your_select_id').change(function () {
    $('#your_hidden_selectid').val($('#your_select_id').val());
});
于 2019-09-30T14:25:26.483 回答