如果取消选中,我希望我的Checkbox禁用EditorsFor,如果选中则启用它们。我知道我必须使用JavaScript,我在网上找到了一些代码,但似乎它们不起作用。
这是我的观看代码:
@{Html.RenderPartial("_PartialError");}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
(...)
<div class="form-group">
@Html.LabelFor(model => model.Czy_zuzywalny, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model => model.Czy_zuzywalny)
@Html.ValidationMessageFor(model => model.Czy_zuzywalny, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Ilosc_minimalna, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Ilosc_minimalna, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Ilosc_minimalna, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Ilosc_optymalna, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Ilosc_optymalna, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Ilosc_optymalna, "", new { @class = "text-danger" })
</div>
</div>
(...)
}
我写了这样的东西并放入js文件(ofc在这段代码的末尾),但它不起作用......
$(document).ready(function ()
{
$("#Czy_zuzywalny").click(function ()
{
if ($("#Ilosc_minimalna").attr("disabled") == "")
{
$("#Ilosc_minimalna").attr("disabled", "disabled");
$("#Ilosc_optymalna").attr("disabled", "disabled");
$("#Ilosc_minimalna").attr("value", "0");
$("#Ilosc_optymalna").attr("value", "0");
}
else
{
$("#Ilosc_minimalna").attr("disabled", "");
$("#Ilosc_optymalna").attr("disabled", "");
}
});
});
即使我选中或取消选中我的复选框,也没有任何反应。任何人都可以帮我吗?
答案 0 :(得分:1)
将您的jQuery代码更改为:
removeAttr("disabled")
代码中的if条件实际上从未计算为true,因为在启用的输入中,'disabled'属性没有空字符串的值。它只是不存在(因此使用</body>
)。
更新:工作https://jsfiddle.net/Zedhmem/ju0xr8of/1/
更新2:
为了在Create视图中添加脚本并在呈现的HTML中的jQuery脚本标记之后显示它,请执行以下操作:
首先在布局文件中添加对RenderSection的调用关闭@RenderSection("scripts", required: false)
标记,如下所示:
required: false
这将使您能够在视图中包含“脚本”部分,其内容将在最终HTML中显示而不是RenderSection调用。请注意,@section scripts {
<script src="/scripts/CheckBoxItemCreate.js"></script>
}
参数指定您不必在每个视图中都包含此部分。
然后在您的“创建”视图中,在任何部分之外添加以下内容:
{{1}}
希望这有帮助!