我在表单中有一些禁用的输入,我想将它们发送到服务器,但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) 以前在我的Angular2 RC5应用程序中,我有一个输入元素,如下所示:
<input type="text" formControlName="blah" disabled/>
Run Code Online (Sandbox Code Playgroud)
目的是使用户在编辑模式下不可编辑该字段; 因此禁用属性.
升级到Angular2 RC6后,我在控制台中收到以下消息:
看起来您正在使用带有反应式表单指令的disabled属性.如果在组件类中设置此控件时将disabled设置为true,则实际将在DOM中为您设置disabled属性.我们建议使用此方法来避免"检查后更改"错误.
例:
Run Code Online (Sandbox Code Playgroud)form = new FormGroup({ first: new FormControl({value: 'Nancy', disabled: true}, Validators.required), last: new FormControl('Drew', Validators.required) });
但是,如果我遵循此建议,删除我的禁用属性并将我的FormControl替换为禁用设置为true,那么该字段不会在提交时发布(即它不会出现在form.value中).
我是否错误地编码了这种情况?是否有一种方法可以将禁用的FormControl包含在表单值中?
作为旁注,我实际上正在使用FormBuilder而不是设置每个FormControl,如果这有所不同.
嗨,我正在使用 angular 7,我想禁用检索用户信息的输入,但是当我使用时, [disabled] = true它不起作用我想禁用该lastname字段,我尝试了这个,但是当我这样做并发送我的表单时,它不会发送在 json 上禁用的输入
这是我在代码 html 中的表单:
<div id="forms" class="page-layout simple fullwidth" fxLayout="column">
<!-- HEADER -->
<div class="header accent p-24 h-160" fxLayout="row" fxLayoutAlign="start center">
<div fxLayout="column" fxLayoutAlign="center start">
<div fxLayout="row" fxLayoutAlign="start center">
<mat-icon class="secondary-text s-18">home</mat-icon>
<mat-icon class="secondary-text s-16">chevron_right</mat-icon>
<span class="secondary-text">Contact</span>
</div>
<div class="h1 mt-16">Contact</div>
</div>
</div>
<!-- / HEADER -->
<div class="content p-24">
<p class="pt-16 pb-32">
{{'contact.Veuillez remplir le formulaire ci-dessous pour effectuer votre demande.Nous allons traiter votre requête dans les plus brefs …Run Code Online (Sandbox Code Playgroud) 我一直无法找到这个问题的答案。在使用 NodeJS、Express 和 Express Bodyparser 以及我的 MEAN 堆栈的其余部分时,我遇到了隐藏字段和禁用字段的问题:提交表单时,它们没有显示在 req.body 对象中。
如果我理解正确的话,express 的 bodyparser 方面实际上是从另一个项目中获取的。无论如何,我一直无法弄清楚为什么要删除这些字段或如何阻止这种情况发生。我怀疑它可能与methodoverride有关,但启用/禁用它对相关字段没有影响。
所以..对于我自己和未来的谷歌人来说:这里发生了什么?
这是一些代码,根据要求:JADE:
form(action="/admin/users/edit", method="post", ng-submit='registerUser($event)', name='form', novalidate)
.row(ng-show="ifweareupdating")
label(for="_id") _id:
input(type="hidden", id="_id", name="_id", ng-model="newUser._id")
input(type="text", id="_notHiddenId', name="_notHiddenId", ng-model="newUser._id")
Run Code Online (Sandbox Code Playgroud)
表达:
app.post("/admin/users/edit", pass.ensureAdmin, userRoutes.editUserPost);
Run Code Online (Sandbox Code Playgroud)
用户路由:
exports.userRoutes.editUserPost = function(req,res,next) {
console.log(req.body._id) // logs undefined
console.log(req.body._notHiddenId) // logs actual id
}
Run Code Online (Sandbox Code Playgroud) 在我的表单中,我有两个被禁用的输入,因为用户必须使用我在视图上制作的键盘来填充它们。但是,当我提交表单时,对象到达时其参数为 0(因为它们是数字)。我知道它是禁用标签导致这种情况发生的,因为当我删除标签时,值会被初始化。
这些是我的输入:
<td>@Html.EditorFor(model => model.Cliente, new { htmlAttributes = new { disabled = "true" } })</td>
Run Code Online (Sandbox Code Playgroud)
我怎样才能禁用它们并同时将值发送到控制器?
现在这对我来说很奇怪。当我将表单提交到控制器时,所有输入字段都被正确映射,但是:
<input asp-for="Id" disabled class="form-control" value="something"/>
Run Code Online (Sandbox Code Playgroud)
不会(始终为空)。
当我删除禁用时效果完美!
我有另一个页面具有类似的禁用输入字段,并且该页面工作正常。这里发生了什么?
forms ×3
angular ×2
html ×2
angularjs ×1
asp.net-core ×1
browser ×1
express ×1
http ×1
javascript ×1
node.js ×1