Dar*_*rov 149
你不能做场readonly="readonly"
而不是disabled="disabled"
吗?只读字段值将提交给服务器,同时仍然是用户不可编辑的.一个SELECT
标签是个例外,虽然.
San*_*tos 37
谢谢大家:
我解决这个问题的方式:
document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";
Run Code Online (Sandbox Code Playgroud)
注意:
我得到了关于答案的这些信息,但我编辑了.
DLe*_*Leh 28
@ppumkin在对这个答案的评论中提到了这一点,但我想强调它,因为我无法找到有关从残疾人提交数据的其他资源<select>
.我也相信它与问题有关,因为选择不是<input>
s而是它们是"输入".
只需为禁用的选择包含一个隐藏字段,并将其全部排序.
例:
@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won't be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@
Run Code Online (Sandbox Code Playgroud)
注意:这将在页面上放置两个具有相同ID的标签,这不是真正有效的HTML,并且可能会导致javascript令人头疼.对我来说,我有javascript通过其html设置下拉列表的值id
,如果你把隐藏字段放在第一位,javascript将找到而不是select
.
tva*_*son 19
通常,如果我有一个"只读"字段但需要提交回服务器,我将禁用显示(或简单地显示文本),但随后添加一个具有相同名称的隐藏字段.您仍然需要确保在服务器端实际上没有修改该字段 - 只是不要在操作中从模型中更新它 - 但是如果有错误,模型状态仍然是准确的.
Dha*_*iya 14
您也可以在表单提交之前使用这样的代码:
$(":disabled", $('#frmMain')).removeAttr("disabled");
Run Code Online (Sandbox Code Playgroud)
根据设计浏览器不支持。
要么使它们readonly
允许向服务器提交值,要么如果您正在处理仍然可以使用readonly
Select 等属性的控件,请添加 css 样式pointer-events: none;
以使它们非交互式
有点像黑客,但有效!当您直接使用提交按钮提交表单而不使用 javascript 时,它也适用。不需要额外的工作!
例如:
<select asp-for="TypeId"
asp-items="@(new SelectList(await TypeRepository.FetchTypesAsync(), "TypeId", "Name"))"
class="form-control form-control-sm"
readonly
style="pointer-events: none;">
</select>
Run Code Online (Sandbox Code Playgroud)
您可以创建如下所示的编辑器模板
CSS
.disabled {
background-color:lightgray;
}
Run Code Online (Sandbox Code Playgroud)
编辑模板
@model string
@Html.TextBoxFor(x => x,new {@class="disabled", @readonly=true })
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
75856 次 |
最近记录: |