禁用输入的值将不会被提交

问题描述 投票:0回答:9

这是我在 Firefox 中通过 Firebug 找到的。

Values of disabled inputs will not be submitted

其他浏览器也一样吗?

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

form-submit disabled-input forms http-post
9个回答
389
投票

disabled
输入不会提交数据。

使用

readonly
属性:

<input type="text" name="inputName" readonly />

来源在这里


223
投票

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

更多信息(第 17.12.1 节)

属性定义

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

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

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

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

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

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

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

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


40
投票

您可以使用三种东西来模仿残疾人:

  1. HTML:

    readonly
    属性(以便在表单提交时可以使用输入中存在的值。而且用户无法更改输入值)

  2. CSS:

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

  3. HTML:

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


25
投票

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

17.13.2 成功控制

成功的控件对于提交来说是“有效”的。 [剪]

  • 禁用的控件无法成功。

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


11
投票
<input type="text" disabled /> 

不要使用 readonly 来代替这个禁用的功能

<input type="text" readonly />

8
投票

有两个属性,即

readonly
disabled
,可以进行半只读输入。但它们之间有一点细微的差别。

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

jQuery 方法(一):

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

jQuery 方法(二):

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

JavaScript 方法:

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

PS

disabled
readonly
是标准的 html 属性。
prop
jQuery 1.6
一起介绍。


2
投票

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


1
投票

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

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

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

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

0
投票

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

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

提交后启用所有这些。这将确保所有内容都已发布

© www.soinside.com 2019 - 2024. All rights reserved.