禁用的表单input不会出现在请求中

我在表单中有一些禁用的input,我想将它们发送到服务器,但Chrome从请求中排除它们。

有没有任何解决方法,而不添加一个隐藏的领域?

<form action="/Media/Add"> <input type="hidden" name="Id" value="123" /> <!-- this does not appear in request --> <input type="textbox" name="Percentage" value="100" disabled="disabled" /> </form> 

带有“已禁用”属性的元素不会被提交,或者您可以说不会发布其值(请参阅构build表单数据集的规范中步骤3中的第二个项目符号点)。

也就是说,

 <input type="textbox" name="Percentage" value="100" disabled="disabled" /> 

仅供参考,

  1. 禁用的控件不会收到焦点。
  2. 禁用的控件在标签导航中被跳过。
  3. 禁用的控件无法成功发布。

你可以在你的案例中使用readonly属性,通过这样做,你将能够发布你的领域的数据。

也就是说,

 <input type="textbox" name="Percentage" value="100" readonly="readonly" /> 

仅供参考,

  1. 只读元素获得焦点,但不能被用户修改。
  2. Tab键导航中包含只读元素。
  3. 只读元素已成功发布。

使用jquery并用ajax发送数据,你可以解决你的问题:

 <script> $('#form_id').submit(function() { $("#input_disabled_id").prop('disabled', false); //Rest of code }) </script> 

如果您必须禁用该字段并传递数据,则可以使用javascript将相同的数据input到隐藏字段中(或者仅设置隐藏字段)。 这将允许您禁用它,但仍然发布数据,即使您将张贴到另一个页面。

我更新这个答案,因为是非常有用的。 只需添加只读input。

所以forms将是:

 <form action="/Media/Add"> <input type="hidden" name="Id" value="123" /> <input type="textbox" name="Percentage" value="100" readonly/> </form> 

你完全可以避免禁用,这是很痛苦的,因为HTML表单格式不会发送任何有关<p>或其他标签的任何东西。

所以你可以改为定期

 <input text tag just before you have `/> 

添加这个readonly="readonly"

它不会禁用您的文本,但不会被用户更改,所以它像<p>一样工作,并将通过表单发送值。 如果您想使其更像<p>标签,请移除边框