MVC5根据另一个文本框值动态禁用文本框

时间:2019-04-26 14:32:52

标签: c# asp.net asp.net-mvc razor html.textbox

我有MVC5项目,有2个文本框(客户ID,文档ID)和一个下拉列表。

我想基于文档ID值动态启用或禁用客户端ID文本框和下拉列表,例如,如果我在文档ID文本框中写了一些内容,我希望看到客户端ID文本框和下拉列表被禁用,如果我从文档ID文本框中删除文本,我想查看已启用的客户端ID文本框和下拉列表。

到目前为止,我已经进行了研究,并且说实话,无法找到确切的答案。我读了一些有关jquery的内容,但是我对javascript的了解很弱。

这是我的代码。如何获得理想的结果?

<span>@Html.DisplayNameFor(model => model.ClientId).ToString():</span>
@Html.TextBox("ClientId", Model.Count()>0? Model.FirstOrDefault().ClientId:"", new { @class = "inline" })

<span>@Html.DisplayNameFor(model=>model.DocumentIdentificationId).ToString():</span>
@Html.TextBox("DocumentIdentificationId", Model.Count() > 0 ? Model.FirstOrDefault().DocumentIdentificationId: "", new {@class = "inline" })

<span>@Html.DisplayNameFor(model => model.DocumentType).ToString():</span>
@Html.DropDownList("DocumentTypes", new SelectList(documentTypes, "DocType", "DocName"),"", new { @class = "inline" }) 

1 个答案:

答案 0 :(得分:3)

您可以编写脚本来执行此操作。

因为@Html.TextBox("ClientId", Model.Count()>0? Model.FirstOrDefault().ClientId:"", new { @class = "inline" })将生成一个ID = ClientId的输入标签

您可以根据需要使用更改事件或键入事件。

$("#ClientId").keyup(function(){
   if($(this).val() != ""){
      $("#DocumentIdentificationId").attr("disabled", "disabled"); 
      $("#DocumentTypes").attr("disabled", "disabled"); 
   }else{
      $("#DocumentIdentificationId").prop("disabled", false); 
      $("#DocumentTypes").prop("disabled", false); 
   }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
   <input type="text" id="ClientId" />

   <input type="text" id="DocumentIdentificationId" />

    <select id="DocumentTypes">
       <option>Test<option>
    </select>