这是我在 Firefox 中通过 Firebug 找到的。
Values of disabled inputs will not be submitted
其他浏览器也一样吗?
如果是这样,原因是什么?
是的,所有浏览器不应提交禁用的输入,因为它们是只读的。
更多信息(第 17.12.1 节)
属性定义
disabled [CI] 当为表单控件设置时,此布尔属性 禁用用户输入的控件。设置后,禁用属性 对元素有以下影响:
- 禁用的控件不会获得焦点。
- 在选项卡导航中会跳过禁用的控件。
- 禁用的控件无法成功。
以下元素支持禁用属性:BUTTON、INPUT、 OPTGROUP、OPTION、SELECT 和 TEXTAREA。
该属性是继承的,但本地声明会覆盖 继承价值。
如何呈现禁用元素取决于用户代理。为了 例如,某些用户代理“灰显”禁用菜单项、按钮 标签等
在此示例中,INPUT 元素被禁用。因此,它不能 接收用户输入其值也不会随表单一起提交。
<INPUT disabled name="fred" value="stone">
注意。动态修改disabled值的唯一方法 属性是通过脚本实现的。
您可以使用三种东西来模仿残疾人:
HTML:
readonly
属性(以便在表单提交时可以使用输入中存在的值。而且用户无法更改输入值)CSS:
'pointer-events':'none'
(阻止用户点击输入)HTML:
tabindex="-1"
(阻止用户从键盘导航到输入)<input type="text" disabled />
不要使用只读功能来代替这个禁用功能
<input type="text" readonly />
有两个属性,即
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
一起介绍。
Disabled
控件不能成功,控件成功才“有效”提交。
这就是禁用的控件不随表单提交的原因。
即使在只读属性上,选择控件仍然可单击
如果您仍想禁用该控件,但希望发布其值。 您可以考虑创建一个隐藏字段。与您的对照具有相同的值。
然后创建一个jquery,选择更改
$('#your_select_id').change(function () {
$('#your_hidden_selectid').val($('#your_select_id').val());
});
这是解决方案,仍然使用禁用的属性。 首先禁用加载时的输入。
$(document).ready(function(){
$("formselector:input").prop("disabled",true);
$( "formselector" ).submit(function( event ) {
$(":disabled").prop("disabled",false);
});
});
提交后启用所有这些。这将确保所有内容都已发布