ChatGPT解决这个技术问题 Extra ChatGPT

禁用输入的值将不会提交

这是我在 Firefox 中通过 Firebug 发现的。

Values of disabled inputs will not be submitted

其他浏览器也一样吗?

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

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

O
Orkun Ozen

disabled 输入不会提交数据。

使用 readonly 属性:

<input type="text" readonly />

Source here


@FrankFang,好的,但是,当我将数据传递给 Laravel 集体的刀片模板时。它行不通。不能这样发送数据。
@ssi-anik readonly 有效,只需确保将“名称”属性传递给输入。
readonly 是公认的标准吗?根据 developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly 看起来不像。
A
Aziz

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

More information(第 17.12.1 节)

属性定义禁用 [CI] 当为表单控件设置时,此布尔属性禁用用户输入控件。设置后, disabled 属性对元素有以下影响: 禁用的控件不接收焦点。在选项卡导航中会跳过禁用的控件。禁用的控件不能成功。以下元素支持禁用属性:BUTTON、INPUT、OPTGROUP、OPTION、SELECT 和 TEXTAREA。此属性是继承的,但本地声明会覆盖继承的值。禁用元素的呈现方式取决于用户代理。例如,一些用户代理“灰显”禁用菜单项、按钮标签等。在本例中,INPUT 元素被禁用。因此,它无法接收用户输入,也不会将其值与表单一起提交。 注意。动态修改 disabled 属性值的唯一方法是通过脚本。


解决方法:添加一个与禁用的输入具有相同名称/值的 <input type="hidden"> 元素。
关于哪个浏览器执行和哪个不遵守的任何信息?
请改用 readonly="readonly" :) 参见 stackoverflow.com/questions/7357256/…
@Allisone:Firefox 和 Chrome 似乎遵守了这一点(未提交禁用的输入)。其他浏览器没试过。
@JohnKugelman 为什么同名?残障者无论如何都不会提交.. 还不如将真实姓名给隐藏者,并为残障者使用不同的名称
P
Peter Mortensen

您可以使用三件事来模仿禁用:

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


M
Muleskinner

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

17.13.2 成功的控件 成功的控件对于提交是“有效的”。 [snip] 禁用的控件无法成功。

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


E
Elyas Hadizadeh

有两个属性,即 readonlydisabled,可以进行半只读输入。但是它们之间有一个微小的区别。

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

readonly 属性使您的输入文本被禁用,并且用户无法再更改它。

disabled 属性不仅会使您的输入文本禁用(不可更改),而且也不能提交。

jQuery方法(一):

$("#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 属性。 propjQuery 1.6 一起引入。


P
Peter Mortensen

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


J
Johnine

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

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

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

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

M
Mohamad Elnaqeeb

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

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

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


R
Rasathurai Karan
<input type="text" disabled /> 

而不是这个禁用使用只读

<input type="text" readonly />