0

我在某处遗漏了一段逻辑。我想知道单选按钮是真还是假。

控制台显示;

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' 默认 if (value) {.

4

2 回答 2

4

if (value = 'True')

您使用了单个 = 而不是 ==,这将导致值始终被分配为“真”并#ProfSpecsDiv始终显示。

于 2013-07-30T21:31:38.297 回答
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">​

您只需要检查其中一个框的值,因为它无论如何都是布尔值。您是否考虑过使用复选框?

$(".adjunct_prof").on('change', function(){
    if($('.adjunct_prof_yes').prop('checked')) {
        $('#ProfSpecsDiv').show();
    } else {
        $('#ProfSpecsDiv').hide();
    }
});
于 2013-07-30T21:50:26.810 回答