2013-07-30 82 views
0

我错过了某处的逻辑。我想知道单选按钮是真是假。Jquery单选按钮逻辑

控制台显示;

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是;

<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仍然显示。开发工具显示每次都会执行“显示”代码。 (价值){我已经尝试了True和'True'的默认值。

+4

您在if语句中使用了单个=) – Dolchio

+0

您需要比较===而不是assignment =。 – dcodesmith

+0

使用1和0会不会更容易,那么它会直接评估为布尔值,那么您可以测试'if(active)'? – KnowHowSolutions

回答

4

if (value = 'True')

您已经使用单一=代替==这将导致值总是被分配“真”,并始终显示#ProfSpecsDiv

+0

虽然我知道的更好,但实际上我只是为了笑容而改变了它。但是,现在将其更改回==。如果(价值)有效? – user990016

+0

不,“if(value)'不是一回事;你正在做一个字符串比较,而不是一个布尔值。它会检查'value'是否存储了内容。这将导致显示'#ProfSpecsDiv',而不管它是否设置为'True'或'False'。 – Dolchio

2

Dont不止一次地设置了相同的ID。每个按钮都是一个元素。您可以改为使用class。

<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