2013-04-30 2 views
2

Ниже приведен код, который должен отображать/исчезать текстовое поле в зависимости от того, установлен ли флажок (текстовое поле скрыто при загрузке страницы). Все предупреждения срабатывают правильно, однако я не могу установить флажок для функции .show().jQuery .show() метод не работает внутри .click function

Это jQuery. Это изнутри функции document.ready. Вы можете видеть, что я прокомментировал два других метода, которые я пробовал (ни один из них не работал).

$('#OverrideRegionInd').click(function() { 
     alert($(this).is(':checked')); 
     if ($(this).is(':checked')) { 
      alert("inside if"); 
      $('#Region').show(); 
      //$('#Region').css("display", "inline"); 
      // $('#Region').toggle(); 
      $('#territoryName').html(""); 
      $('#Region').val(""); 

     } else { 
      alert("inside else"); 
      $('#Region').hide(); 
      //$('#Region').css("display", "none"); 
      // $('#Region').toggle(); 
     } 
    }); 

Вот код с точки зрения

<div class="M-editor-label"> 
     @Html.LabelFor(model => model.Region) 
    </div> 
    <div class="M-editor-field" id="territoryName"> 
     @Html.TextBoxFor(model => model.Region, new { style = "display: none;" }) 
     @Html.ValidationMessageFor(model => model.Region) 
    </div> 

Вот это HTML когда страница отображается для данного набора <div> «s

<div class="M-editor-label"> 
     <label for="Region">Territory</label> 
    </div> 
    <div class="M-editor-field" id="territoryName"> 
     <input id="Region" name="Region" style="display: none;" type="text" value="" /> 
     <span class="field-validation-valid" data-valmsg-for="Region" data-valmsg-replace="true"></span> 
    </div> 
+0

лишь головы вверх, вы можете сделать то же самое с 'если (this.checked)' ... способ меньше накладных расходов, чем '$ (это) .а (': проверено')'. – PlantTheIdea

+0

У вас есть несколько элементов с одним и тем же идентификатором? – epascarello

+0

только хэдз-ап, вы можете сделать '$ ('# Region'). Toggle (this.checked)' без условия if/else, а тем более накладные расходы? – adeneo

ответ

1

Это потому, что вы :

$('#territoryName').html(""); 

Это родительский номер #Region, вы фактически удаляете элемент #Region с этой линией. Возьмите это, и все будет хорошо.

DEMO

+1

очень хороший ловить! –

Смежные вопросы