我有一个带有check_box_tags的Ruby on Rails 3表单。如何设置ID然后在javascript函数中获取值? 这是check_box_tag
<div class="row" id="device">
<ul>
<li><%= check_box_tag 'survey[hardware][]', "IP Phones" %> IP Phones</li>
</ul>
</div>
我的javascript
$(document).ready(function() {
$('#device').change(function(){
if (($('#device').val() == "IP Phone") || ($('#device').val() == "IP PBX Systems"))
{
$('#phonepbx').css('display', 'none');
}
else
{
$('#phonepbx').css('display', 'inline');
}
});
});
我不知道如何设置和获取check_box_tag的ID。我试图根据他们选择的内容显示或隐藏div id =“phonepbx”。如果他们选择前两个复选框之一,我想显示#phonepbx div。否则将其隐藏起来。
谢谢
修改 这就是HTML最终的结果:
<li><input id="survey_hardware_" name="survey[hardware][]" type="checkbox" value="IP Phones" /> IP Phones</li>
我确实需要jquery并且需要jquery_ujs。 我需要别的吗?
解决方案
function checkHardware() {
if ($('#device input:checkbox:eq(0)').is(':checked') || $('#device input:checkbox:eq(1)').is(':checked'))
{
$('#phonepbx').css('display', 'block');
}
答案 0 :(得分:1)
根据您的说明,您只是检查是否选中了两个特定复选框中的至少一个:
$(document).ready(function() {
$('#device').change(function(event){
if ($(event.target).filter("input[value='IP Phone']:checked").length ||
$(event.target).filter("input[value='IP PBX Systems']:checked").length)
{
$('#phonepbx').css('display', 'inline');
}
else
{
$('#phonepbx').css('display', 'none');
}
});
});
答案 1 :(得分:0)
在我看来,你正试图通过向div添加更改处理程序来捕获复选框事件。这不是理想的陷阱,因为你必须搜索改变了什么。但正如RustyToms所说,你的ID应该是由RoR设定的“调查[硬件] []”。
$(document).ready(function() {
$('#survey[hardware][]').on('click', function(){
(this.checked && this.val().match(/IP Phone|IP PBX Systems/)) ? $('#phonepbx').hide() : $('#phonepbx').show();
});
});