单击标签以显示texbox

时间:2015-05-14 10:14:50

标签: jquery asp.net-mvc-4 razor

我正在尝试在页面顶部放置一个标签,用户可以点击该标签隐藏标签,并显示文本框。但是,我无法让它发挥作用。

剃刀代码:

<div class="form-group">
    <div class="col-md-10">
        @Html.DisplayFor(model => model.Name, new { id = "Name" })
        @Html.EditorFor(model => model.Name, new {htmlAttributes = new {@class = "form-control", id = "NameTextBox"}})
        @Html.ValidationMessageFor(model => model.Name, "", new { id = "NameTexBoxValidator" })
    </div>
</div>

jQuery的:

$("#Name").click(function setCompleteStatus() {
    if ($("#Name").is(":visible")) {
        $("#NameTextBox").hide();
    } else {
        $("#Name").show();
    }
});

3 个答案:

答案 0 :(得分:0)

代码不太清楚,但我可以尝试一下,这段代码会隐藏标签onclick并按照你的要求显示textBox。

$("#Name").click(function() {
    if ($("#Name").is(":visible")) {
      $("#NameTextBox").show();
      $("#Name").hide();
    }
  }
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="">
  <label id="Name" for="male">Male</label>
  <input id="NameTextBox" type="text" style="display:none;">
</form>

答案 1 :(得分:0)

试试这个,

$("#Name").click(function(){
    if ($("#Name").is(":visible")) {
        $("#NameTextBox").show();
        $("#Name").hide();
    } else { // I'd added this else block for discussion purposes only
        $("#NameTextBox").hide();
        $("#Name").show();
   }
});

这将在点击标签时显示文本框和隐藏标签。 else部分无法访问,因为在标签被隐藏后,无法再次触发此事件(基于给定的代码)

编辑:

 @Html.ValidationMessageFor(model => model.Name, "", new { id = "NameTexBoxValidator" })

答案 2 :(得分:0)

我改变了@Html.DisplayFor(model => model.Name, new { id = "Name" })@Html.Label(Model.Name, new { id = "Name" })并且它有效。