残疾人投入的价值将不会提交?

时间:2009-08-31 04:00:20

标签: form-submit html-form html-form-post disabled-input

这是我在firefox中找到的fireBug。

在其他浏览器中是否相同?

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

7 个答案:

答案 0 :(得分:241)

disabled输入不会提交数据。

使用readonly属性:

<input type="text" readonly />

Source here

答案 1 :(得分:172)

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

More info(第17.12.1节)

  

属性定义

     

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

     
      
  • 已禁用的控件无法获得焦点。
  •   
  • 在标签导航中跳过已禁用的控件。
  •   
  • 禁用的控件无法成功。
  •   
     

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

     

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

     

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

     

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

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

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

答案 2 :(得分:21)

他们没有被提交,因为that's what it says in the W3C spec

  

17.13.2成功控制

     

成功的控制对于提交是“有效的”。 [剪断]

     
      
  • 禁用的控件无法成功。
  •   

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

答案 3 :(得分:12)

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

  1. HTML:readonly属性(以便输入中显示的值可用于表单提交。用户也无法更改输入值)

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

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

答案 4 :(得分:3)

有两个属性,即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

答案 5 :(得分:2)

Disabled控件无法成功,成功的控件对提交“有效”。 这就是禁用控件不提交表单的原因。

答案 6 :(得分:0)

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

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

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

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