2012-01-10 2 views
1

Я пытаюсь проверить, является ли значение моего выпадающего списка «Single Date», а затем, если это так, скрыть div #ToDate. Не уверен, что я делаю неправильно здесь.показать/скрыть div на основе значения select - jquery

HTML

<div class="mc-form-field mc-full"> 
    <label for="formDate">Payment Date:</label> 
    <select name="mc-formPaymentDate" id="PaymentDate"> 
     <option value="Please select">Please select</option> 
     <option value="Single Date">Single Date</option> 
     <option value="Date Range">Date Range</option> 
     <option value="Single Month">Single Month</option> 
     <option value="Last 30 Days">Last 30 Days</option> 
     <option value="Last 60 Days">Last 60 Days</option> 
     <option value="Last 90 Days">Last 90 Days</option> 
    </select> 
</div> 

<div class="mc-form-field mc-half mc-inline"> 
    <label for="mc-formFromDate">From Date:</label> 
    <input type="text" name="formFromDate" id="mc-formFromDate" class="mc-text"> 
</div> 

<div class="mc-form-field mc-half mc-inline mc-right" id="ToDate"> 
    <label for="mc-formToDate">To Date:</label> 
    <input type="text" name="formToDate" id="mc-formToDate" class="mc-text"> 
</div> 

Javascript

$("#PaymentDate").change(function() { 
    if (this.value == 'Single Date') { 
     $('#ToDate').hide(); 
    } 
}); 
+0

** WOW ** Вы можете исправить интервал, пожалуйста? – Neal

+2

Это все JavaScript? Если это так, вы можете обернуть его при вызове '$ (document) .ready()', чтобы он не срабатывал до загрузки DOM. В противном случае он может просто не видеть элемент, к которому вы пытаетесь привязать. – David

+0

Привет, Дэвид, спасибо, у меня есть это завернутое в документ готовое - я просто вставлял эту часть этого здесь. – user1141329

ответ

1

Он отлично работает, но вам нужно явно show ToDate снова, если тест является ложным:

$("#PaymentDate").change(function() { 
    if (this.value == 'Single Date') { 
     $('#ToDate').hide(); 
    } else { 
     $('#ToDate').show(); 
    } 
}); 

http://jsfiddle.net/mblase75/3F93A/

0

Вы попробовали?

<script type="text/javascript"> 
$(document).ready(function(){ 
     $("#PaymentDate").change(function() { 
      if ($(this).val() == 'Single Date') 
       $('#ToDate').hide(); 
     }); 
}); 
</script> 

Обратите внимание, что я использую $ (это) .val() вместо this.value

+0

'this.value' является более эффективным, но это все равно будет работать, чтобы скрыть' # ToDate'. –

5

Попробуйте это с помощью JQuery toggle метод, который может принимать логический флаг ли, чтобы показать или скрыть элемент.

$("#PaymentDate").change(function() { 
    $('#ToDate').toggle(this.value != 'Single Date'); 
}); 
+1

Впервые я увидел 'toggle()' взять логический аргумент. Острота. – Blazemonger

+0

спасибо, что работает! – user1141329

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