这是我用Firebug在Firefox中找到的。

Values of disabled inputs will not be submitted

在其他浏览器中也一样吗?

如果有,原因是什么?


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

更多信息(第17.12.1节)

Attribute definitions disabled [CI] When set for a form control, this Boolean attribute disables the control for user input. When set, the disabled attribute has the following effects on an element: Disabled controls do not receive focus. Disabled controls are skipped in tabbing navigation. Disabled controls cannot be successful. The following elements support the disabled attribute: BUTTON, INPUT, OPTGROUP, OPTION, SELECT, and TEXTAREA. This attribute is inherited but local declarations override the inherited value. How disabled elements are rendered depends on the user agent. For example, some user agents "gray out" disabled menu items, button labels, etc. In this example, the INPUT element is disabled. Therefore, it cannot receive user input nor will its value be submitted with the form. <INPUT disabled name="fred" value="stone"> Note. The only way to modify dynamically the value of the disabled attribute is through a script.


它们不会被提交,因为W3C规范是这么说的。

17.13.2成功控制 一个成功的控件是“有效的”提交。(剪) 被禁用的控件无法成功执行。

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


禁用的输入将无法提交数据。

使用readonly属性:

<input type="text" readonly />

源在这里


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


你可以用三个东西来模仿disabled:

HTML: readonly属性(这样输入中的值可以在表单提交时使用。用户也不能改变输入值) CSS: 'pointer-events':'none'(阻止用户点击输入) HTML: tabindex="-1"(阻止用户从键盘导航到输入)


选择控件仍然是可点击的,即使在只读attrib

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

然后创建一个jquery,选择更改

$('#your_select_id').change(function () {
    $('#your_hidden_selectid').val($('#your_select_id').val());
});

有两个属性,即readonly和disabled,可以生成半只读输入。但是它们之间有一个微小的区别。

<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 disabled和readonly是标准的html属性。jQuery 1.6中引入的道具。


这里是解决方案,仍然使用禁用属性。 首先禁用加载时的输入。

$(document).ready(function(){
  $("formselector:input").prop("disabled",true);
  $( "formselector" ).submit(function( event ) {
      $(":disabled").prop("disabled",false);
      });
});

在提交时启用所有这些。这将确保一切都张贴


<input type="text" disabled /> 

使用readonly代替这个禁用

<input type="text" readonly />