这是我在Firefox中由Firebug发现的。

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

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

评论

您可以设置“只读”属性。例如,Chrome将其呈现为禁用字段,但确实将其提交。

禁用表单输入的可能重复项未出现在请求中

#1 楼

是的,所有浏览器都不应该提交禁用的输入,因为它们是只读的。
更多信息(第17.12.1节)

属性定义
disabled [CI]设置时对于表单控件,此布尔属性
禁用该控件以供用户输入。设置后,禁用的属性
对元素具有以下效果:

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

以下元素支持禁用的属性:BUTTON,INPUT,
OPTGROUP,OPTION,SELECT和TEXTAREA。
此属性是继承的,但是覆盖了本地声明
继承的值。
如何呈现禁用元素取决于用户代理。对于
示例,某些用户代理“禁用”了禁用的菜单项,按钮
标签等。
在此示例中,INPUT元素被禁用。因此,它不能
接收用户输入,也无法将其值与表单一起提交。
<INPUT disabled name="fred" value="stone">

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


评论


解决办法:添加与禁用输入名称/值相同的元素。

–约翰·库格曼(John Kugelman)
09年8月31日下午4:05

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

– Allisone
13年1月12日在17:52

改用readonly =“ readonly” :)参见stackoverflow.com/questions/7357256/…

– Adrien Be
13年7月8日在13:03

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

– Adrien Be
13年7月8日在13:03

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

–Arth
18-10-4在14:53

#2 楼

disabled输入将不会提交数据。

使用readonly属性:

<input type="text" readonly />


此处来源

评论


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

– ssi-anik
16年2月8日在16:21

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

– BenNov
4月10日9:57



#3 楼

您可以使用三件事来模拟禁用的内容:


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


#4 楼

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


17.13.2成功的控件

成功的控件对于提交。 [snip]


禁用的控件无法成功。



换句话说,规范指出禁用被视为无效,因此不应提交。

#5 楼

有两个属性,分别是readonlydisabled,它们可以构成半只读输入。但是它们之间只有微小的区别。 br /> readonly属性不仅会使您的输入文本被禁用(不可更改),而且也无法提交它。

jQuery方法(1):

<input type="text" readonly />
<input type="text" disabled />


jQuery方法(2):

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

JavaScript方法:

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


PS disableddisabled是标准的html属性。 readonlyprop一起推出。

#6 楼

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

#7 楼

如果仍要禁用控件但希望发布其值,则即使在只读attrib上,仍可以单击选择控件。
您可以考虑创建一个隐藏字段。具有与控件相同的值。

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

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