如果下拉列值更改为某个值,则动态禁用TextBoxFor

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果下拉列值更改为某个值,则动态禁用TextBoxFor相关的知识,希望对你有一定的参考价值。

是否可以动态disable或制作TextBoxFor readonly如果下拉值更改为某个值而不使用帮助器或javascript

剃刀视图

<div class="form-group">
    @html.LabelFor(m => m.TypeId, new { @class = "col-md-2 control-label" })
    <div class="col-md-4">
        @Html.DropDownListFor(m => m.TypeId, new SelectList(ViewBag.TypesDDL, "TypeId", "Name"), new { @class = "form-control" })
    </div>
    @Html.LabelFor(m => m.TypeOthers, new { @class = "col-md-2 control-label" })
    <div class="col-md-4">
    @if (Model.TypeId == "Others") {
        @Html.TextBoxFor(m => m.TypeOthers, new { @class = "form-control" })
        @Html.ValidationMessageFor(m => m.TypeOthers, "", new { @class = "text-danger" })
    }
    </div>
</div>

在上面的代码中,我使用if语句来显示TypeOthers TextBoxFor,如果TypeId DropDownListFor等于Others,但这在加载后不起作用,如果我将TypeId的下拉值更改为不是OthersTypeOthers TextBoxFor没有出现。

我知道这可以通过使用javascript轻松完成,就像在下面的代码中一样,但我想知道是否可以通过使用razor来完成。

$("#TypeId").change(function () {
    if (document.getElementById("TypeId").value == "OTHERS") {
        document.getElementById("TypeOthers").disabled = false;
    } else {
        document.getElementById("TypeOthers").disabled = true;
    }
});

如果我不够清楚,请发表评论。

答案

我想这会起作用试试这个

@{ object displayMode = (Model.Typedof) ? "Others" : new {disabled = "disabled" };
@Html.TextBoxFor(m=>m. TypeOther, "", displayMode)
}

以上是关于如果下拉列值更改为某个值,则动态禁用TextBoxFor的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Oracle Sql 中将列值更改为默认值时标识符无效

如何从 PySpark Dataframe 中删除重复项并将剩余列值更改为 null

使用 SQL 中的巧妙语句以连续方式将列值更改为多条记录

将 TEXT 列默认值从 null 更改为 ''(空字符串)

R - 如果在列表中找不到,则更改值

在空的剑道网格上排序显示旧数据