如果选中复选框,则启用EditorFor

时间:2016-10-25 07:31:30

标签: javascript asp.net asp.net-mvc checkbox attributes

如果取消选中,我希望我的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", "");
        }
    });
});

即使我选中或取消选中我的复选框,也没有任何反应。任何人都可以帮我吗?

1 个答案:

答案 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}}

希望这有帮助!