2013-07-30 125 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