禁用的表单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" />
仅供参考,
- 禁用的控件不会收到焦点。
- 禁用的控件在标签导航中被跳过。
- 禁用的控件无法成功发布。
你可以在你的案例中使用readonly
属性,通过这样做,你将能够发布你的领域的数据。
也就是说,
<input type="textbox" name="Percentage" value="100" readonly="readonly" />
仅供参考,
- 只读元素获得焦点,但不能被用户修改。
- Tab键导航中包含只读元素。
- 只读元素已成功发布。
使用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>
标签,请移除边框