【发布时间】:2016-10-19 17:50:22
【问题描述】:
我有一些生成表单的 PHP 代码...但是页面上有两个隐藏的 div 部分,一个在另一个内部,根据选择的答案显示或隐藏。
第一个问题(如果选择“是”则显示第二个问题)效果很好。
第二个问题,如果他们点击“其他”复选框,那么应该会显示一个文本字段以允许他们指定答案。
除了“取消选中”另一个框外,一切正常,它应该隐藏文本字段......但它没有。如果我将第一个答案切换为否,那么它会正确隐藏第二个问题......我可以随意来回切换而不会出现问题......但底部的“其他(指定)”问题是不工作。
这可能很简单,我猜它与 javascript 相关......但我似乎找不到它。
这是我的代码:
<script type="text/javascript">
$(document).ready(function() {
$("#Q39_div").toggle($("input[name=38]:checked").val() == 1);
$("input[name='38']").change(function(){
$("#Q39_div").toggle($(this).val() == 1);
});
$("#Q56_div").toggle($("input[name=q56]:checked").val() == 1);
$("input[name='q56']").change(function(){
$("#Q56_div").toggle($(this).val() == 1);
});
});
</script>
<form name='frmSurvey' method='post' action='DoAction.php?action=Survey6'>
<input type='hidden' name='direction' value='forward'/>
<ul type="none" style='padding-left: 20px;'>
Have you changed jobs <i>within the GNWT</i> in the past two years?
<blockquote>
<input type="radio" name="38" value="1" /> Yes<br>
<input type="radio" name="38" value="2" /> No<br>
<br/> <br/>
</blockquote>
<div id="Q39_div" style="width:75%; display:none;">
<table width="90%" cellpadding="3" cellspacing="0" border='1' class='SurveyTable'>
<input type="hidden" name="q51" value="99" />
<input type="checkbox" name="q51" value="1" /> Blah blah blah<br />
<input type="hidden" name="q52" value="99" />
<input type="checkbox" name="q52" value="1" /> More blah blah blah<br />
<input type="hidden" name="q53" value="99" />
<input type="checkbox" name="q53" value="1" /> Some other blah blah blah<br />
<input type="hidden" name="q54" value="99" />
<input type="checkbox" name="q54" value="1" /> Again blah blah blah<br />
<input type="hidden" name="q55" value="99" />
<input type="checkbox" name="q55" value="1" /> Who cares blah blah blah<br />
<input type="hidden" name="q56" value="99" />
<input type="checkbox" name="q56" value="1" /> Other (Specify)<br />
</table>
<div id="Q56_div">
<input name="q56_text" value="" class="SpecifyBox" type="text" size="15" maxlength="50" />
</div>
</div><br>
</ul>
【问题讨论】:
-
Toggle 没有您使用的参数。 Toggle 应该根据最后一组来改变可见性。 api.jquery.com/toggle
-
@Marco 是的:api.jquery.com/toggle/#toggle-display
-
哦,我错过了最后一个,抱歉,仍然认为使用 toggle() 不是一个好主意,我宁愿使用 .show() 和 .hide()。我在看代码,复选框总是有 val,所以你不想使用它,你需要检查对象的动态检查状态。检查与否,输入总是有值...
-
谢谢大家。我输入了 .is(':checked') (这是很好的自我记录代码),效果很好。
标签: javascript jquery html