如何设置和获取javascript函数的check_box_tag的ID?

时间:2013-12-11 02:41:34

标签: javascript jquery ruby-on-rails ruby-on-rails-3

我有一个带有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');
}

2 个答案:

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