2015-05-14 4 views
-1

Я пытаюсь создать надпись на верхней части страницы, которую пользователи могут щелкнуть, которая скроет ярлык и текстовое поле. Однако я не могу заставить его работать.Нажмите на ярлык для отображения texbox

код 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(); 
    } 
}); 
+0

Вы указали все 3 элемента одного и того же атрибута id (который является недопустимым html). И у вас нет элементов '

+0

@Regent, Ваше право, хотя кто знает, если это опечатка. В любом случае нет элемента с 'id =" Name "' –

+0

Это была опечатка, извините. Я уже изменил его по моему вопросу. –

ответ

0

Я изменил @Html.DisplayFor(model => model.Name, new { id = "Name" }) к @Html.Label(Model.Name, new { id = "Name" }) и ему работал.

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>

+0

Я поставил точку останова на нем, и он не останавливается, когда я нажимаю на ярлык ... –

+0

Я сделал полный рабочий фрагмент – SharpEdge

+0

Да, вы выполняете сниппет ... однако, это не работает в моем случае (с использованием бритвы) ... Я предполагаю, что это как-то связано с идентификатором, так как он не попадает в jquery вообще –

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(); 
    } 
}); 

Это покажет текстовое поле и скрыть метку по щелчку этикетке. части иначе недостижим, хотя, потому что после того, как метка была спрятана, нет никакого способа, чтобы вызвать это событие еще раз (на основании данного кода)

Edit:

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

Хорошо, обновите его. – Sherlock

+0

Я поставил точку останова на нем, и это не останавливается, когда я нажимаю на ярлык ... –

+0

Я обновил его. Пожалуйста попробуйте. – Sherlock