我在某个地方错过了一段逻辑。我想知道单选按钮是真还是假。
控制台显示;
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?
<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仍然显示。开发工具显示每次都会执行“show”代码。我尝试过True和'True'默认if(value){。
答案 0 :(得分:4)
if (value = 'True')
您使用了单个=而不是==这将导致值始终被指定为“True”并且始终显示#ProfSpecsDiv
。
答案 1 :(得分:2)
不要多次设置相同的ID。每个按钮都是一个元素。你可以改用类。
<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();
}
});