haz*_*zik 313 html browser forms http
我在表单中有一些禁用的输入,我想将它们发送到服务器,但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>
Run Code Online (Sandbox Code Playgroud)
Alp*_*ale 688
"已禁用元素"属性未提交,或者您可以说它们的值未发布(请参阅规范中步骤3中的第二个项目符号,以构建表单数据集).
也就是说,
<input type="textbox" name="Percentage" value="100" disabled="disabled" />
Run Code Online (Sandbox Code Playgroud)
仅供参考,
您可以readonly在您的案例中使用属性,这样您就可以发布您的字段数据.
也就是说,
<input type="textbox" name="Percentage" value="100" readonly="readonly" />
Run Code Online (Sandbox Code Playgroud)
仅供参考,
Lip*_*uga 23
使用Jquery并使用ajax发送数据,您可以解决您的问题:
<script>
$('#form_id').submit(function() {
$("#input_disabled_id").prop('disabled', false);
//Rest of code
})
</script>
Run Code Online (Sandbox Code Playgroud)
除了启用输入之外,要从禁用输入中发布值,您只需在提交时重新启用所有表单的输入.
<form onsubmit="this.querySelectorAll('input').forEach(i => i.disabled = false)">
<!-- Re-enable all input elements on submit so they are all posted,
even if currently disabled. -->
<!-- form content with input elements -->
</form>
Run Code Online (Sandbox Code Playgroud)
如果你更喜欢jQuery:
<form onsubmit="$(this).find('input').prop('disabled', false)">
<!-- Re-enable all input elements on submit so they are all posted,
even if currently disabled. -->
<!-- form content with input elements -->
</form>
Run Code Online (Sandbox Code Playgroud)
对于ASP.NET MVC C#Razor,您可以像这样添加提交处理程序:
using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post,
// Re-enable all input elements on submit so they are all posted, even if currently disabled.
new { onsubmit = "this.querySelectorAll('input').forEach(i => i.disabled = false)" } ))
{
<!-- form content with input elements -->
}
Run Code Online (Sandbox Code Playgroud)
我正在更新这个答案,因为它非常有用。只需将 readonly 添加到输入即可。
所以形式将是:
<form action="/Media/Add">
<input type="hidden" name="Id" value="123" />
<input type="textbox" name="Percentage" value="100" readonly/>
</form>
Run Code Online (Sandbox Code Playgroud)