2013-07-30 4 views
0

Я где-то пропускаю часть логики. Я хочу знать, является ли радиокнопка истинным или ложным.JQuery radio buttons logic

Консольные шоу;

adjunct_prof 
<input type=​"radio" name=​"adjunct_prof" id=​"adjunct_prof" value=​"False" checked=​"checked">​ 
<input type=​"radio" name=​"adjunct_prof" id=​"adjunct_prof" value=​"True">​ 

HTML is;

<div id="ProfessorDiv" class="span4"> 
    <div class="row"> 
     <div class="span4"> 
     Are you an adjunct professor?&nbsp;&nbsp; 
     <input type="radio" name="adjunct_prof" id="adjunct_prof" value="False" 
     <cfif request.adjunct_prof EQ "False"> checked="checked"</cfif> /> No 
     <input type="radio" name="adjunct_prof" id="adjunct_prof" value="True" 
     <cfif request.adjunct_prof EQ "True"> checked="checked"</cfif> /> Yes 
     </div> 
    </div> 
    <div class="row"> 
     <div class="span4" id="ProfSpecsDiv"> 
     <cfinclude template="adjunct_prof.cfm"> 
     </div> 
    </div> 
</div> 

Сценарий;

$("input:radio[name=adjunct_prof]").click(function(){ 
    var value = $(this).val(); 
    alert(value); 
    if (value = 'True') { 
     $('#ProfSpecsDiv').show(); 
    } 
    else { 
     $('#ProfSpecsDiv').hide();  
    } 
}); 

Предупреждение показывает True или False в зависимости от состояния кнопок. Но когда я нажимаю «Да», отображается div. Когда я нажимаю «Нет», ничего не происходит. Div все еще отображается. И инструмент dev показывает, что код «show» выполняется каждый раз. Я попробовал True и «True» по умолчанию if (value) {.

+4

Вы использовали сингл = в инструкции if;) – Dolchio

+0

Вам нужно сравнение === и not assign =. – dcodesmith

+0

Не будет ли проще использовать 1 и 0, тогда он будет оцениваться как булевы напрямую, тогда вы можете просто проверить как 'if (active)'? – KnowHowSolutions

ответ

4

if (value = 'True')

Вы использовали один = вместо ==, который будет вызывать значение всегда присваивается «True» и #ProfSpecsDiv всегда будет показано на рисунке.

+0

Я действительно изменил его только для усмешки, хотя я знаю лучше. Но, изменив его обратно на == работает сейчас. Не должно ли (ценность) работать? – user990016

+0

Нет, 'if (value)' не то же самое; вы выполняете сравнение строк, а не логическое. Он проверит, есть ли в нем что-то, что хранится в нем. Это приведет к тому, что '# ProfSpecsDiv' будет отображаться независимо от того, установлено ли оно« True »или« False ». – Dolchio

2

Dont устанавливает одинаковый идентификатор более одного раза. Каждая кнопка является элементом. Вместо этого вы можете использовать класс.

<input type=​"radio" name=​"adjunct_prof" class=​"adjunct_prof adjunct_prof_yes" value=​"False" checked> <!-- Simply checked is valid html5 -->​ 
<input type=​"radio" name=​"adjunct_prof" class=​"adjunct_prof adjunct_prof_no" value=​"True">​ 

Вам нужно всего лишь проверить значение одного из полей, так как это bool в любом случае. Считаете ли вы использование флажка?

$(".adjunct_prof").on('change', function(){ 
    if($('.adjunct_prof_yes').prop('checked')) { 
     $('#ProfSpecsDiv').show(); 
    } else { 
     $('#ProfSpecsDiv').hide(); 
    } 
}); 
+0

Да, но мои спецификации требуют радио «Да/Нет». – user990016