【发布时间】:2013-12-12 16:22:20
【问题描述】:
Ruby on Rails 3。 我有一个包含两个问题的表格。我希望根据用户对第一个问题的选择来显示或隐藏第二个问题。 当前,该元素应返回长度或值时返回 0。 所以在JS中我输入:
$("survey_hardware_").find("input[value='IP Phones']:checked").length
这会返回 0。
这是脚本:
$(document).ready(function() {
$('#device').change(function(event){
if ($("survey_hardware_").find("input[value='IP Phones']:checked").length ||
$("survey_hardware_").find("input[value='IP PBX Systems']:checked").length)
{
$('#phonepbx').css('display', 'inline');
}
else
{
$('#phonepbx').css('display', 'none');
}
});
});
这是问题:
<div class="row" id="device">
<ul>1. What IP hardware does your company frequently sell and/or install? (select all that apply)<br/>
<li style="display:block;"><%= check_box_tag 'survey[hardware][#{test}]', "IP Phones" %> IP Phones</li>
<li style="display:block;"><%= check_box_tag 'survey[hardware][]', "IP PBX Systems" %> IP PBX Systems </li>
<li style="display:block;"><%= check_box_tag 'survey[hardware][]', "IP Security/Surveillance Systems" %> IP Security/Surveillance Systems</li>
<li style="display:block;"><%= check_box_tag 'survey[hardware][]', "IP infrastructure (cabling, switches...etc.)" %> IP infrastructure (cabling, switches...etc.)</li>
</ul>
</div>
这是我只想在问题一选择了 1 或 2 时才显示的第二个问题。
<div class="row" id="phonepbx" style="display:none">
<ul>4a. My customers have their own brand preferences regarding VoIP manufacturers.<br/>
<li><%= f.radio_button(:voip, "1") %>Strongly Agree</li>
<li><%= f.radio_button(:voip, "2") %>Somewhat Agree</li>
<li><%= f.radio_button(:voip, "3") %>Neutral</li>
<li><%= f.radio_button(:voip, "4") %>Somewhat Disagree</li>
<li><%= f.radio_button(:voip, "5") %>Strongly Disagree</li>
</ul>
</div>
我尝试为每个选择添加一个唯一的 ID。该元素也返回 0。如何获取选择的长度或值以隐藏或显示 div?谢谢
编辑
我把脚本改成了这个。
$(document).ready(function() {
$("#survey_hardware_").on('click', function(){
if (($("#survey_hardware_")[0].value == 'IP Phones') || ($("#survey_hardware_")[1].value == 'IP PBX Systems'))
{
$('#phonepbx').css('display', 'inline');
}
else
{
$('#phonepbx').css('display', 'none');
}
});
});
这将显示 div。但不能切换显示和隐藏。感谢您提供信息。
我的解决方案
function checkHardware() {
if ($('#device input:checkbox:eq(0)').is(':checked') || $('#device input:checkbox:eq(1)').is(':checked'))
{
$('#phonepbx').css('display', 'block');
}
if ($('#device input:checkbox:eq(2)').is(':checked') || $('#device input:checkbox:eq(3)').is(':checked'))
{
$('#ipsec').css('display', 'block');
}
if ($('#device input:checkbox:eq(0)').is(':checked') == false && $('#device input:checkbox:eq(1)').is(':checked') == false)
{
$('#phonepbx').css('display', 'none');
}
if ($('#device input:checkbox:eq(2)').is(':checked') == false && $('#device input:checkbox:eq(3)').is(':checked') == false)
{
$('#ipsec').css('display', 'none');
}
}
感谢您的帮助。
【问题讨论】:
-
如果您将原始代码从
.find()更改为.filter(),它应该可以工作。
标签: jquery ruby-on-rails ruby ruby-on-rails-3