Jquery单选按钮逻辑

时间:2013-07-30 21:27:49

标签: javascript 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仍然显示。开发工具显示每次都会执行“show”代码。我尝试过True和'True'默认if(value){。

2 个答案:

答案 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();
    }
});