2013-12-11 3 views
0

У меня есть форма Ruby on Rails 3 с check_box_tags. Как вы устанавливаете идентификатор, а затем получаете значение в функции javascript? Вот check_box_tagКак вы устанавливаете и получаете идентификатор check_box_tag для функции javascript?

<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. Я пытаюсь показать или скрыть div id = "phonepbx" в зависимости от того, что они выбирают. Если они выберут одну из первых двух флажков, я хочу показать div #phonepbx. В противном случае держите его скрытым.

Спасибо

EDIT Это то, что 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

hmmm .. jQuery val функция обычно ожидает элемент ввода не div. Хотя если вы скопируете val '$ ('# device'). Val ('some value here')' с некоторым значением, вы сохраните его в элементе. Из того, что я вижу в вашем коде, это не так. –

+0

Когда я вводим идентификатор checkbox, я получаю null в JS. document.getElementById ('# обзор [оборудование] []'); null – DDDD

+1

getElementById не является jQuery, вы не добавляете идентификатор с знаком #, также идентификатор вашего входного тега - survey_hardware_, поэтому для получения этого конкретного флажка будет что-то вроде document.getElementById ('survey_hardware_'). –

ответ

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

BTW, тег флажка автоматически создается 'check_box_tag', это первая строка, которую вы предоставляете после вызова этого метода, и совпадает с именем. См. [Docs here] (http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag). Таким образом, идентификатор для этого флажка - ''survey [hardware] []'' – RustyToms

+0

Результат тот же, независимо от того, какой флажок установлен. Он не читает значение. Кроме того, когда я снимаю флажок, div все еще отображается. У меня есть 4 флажка с разными значениями. – DDDD

+0

@DDDD Хорошо, я не понимал, как вы хотите, чтобы он работал. Я отредактировал ответ. Это делает его более простым, но ответ, возможно, не такой информативный :(И обратите внимание, что мне пришлось переключаться с выражением if else. – RustyToms

0

Он смотрит на меня, как вы пытаясь уловить события флажка, добавив обработчик изменений в div. Это не идеальное место, чтобы заманить его в ловушку, так как вам нужно искать то, что изменилось. Но, как сказал RustyToms, ваш идентификатор должен быть «осмотром [аппаратным] []», установленным RoR.

$(document).ready(function() { 
    $('#survey[hardware][]').on('click', function(){ 
    (this.checked && this.val().match(/IP Phone|IP PBX Systems/)) ? $('#phonepbx').hide() : $('#phonepbx').show(); 
    }); 
}); 
+0

Я слышал, что onclick может быть лучше. У вас есть пример для клика? – DDDD

+0

Отредактировано для события щелчка – Craig

+0

Хорошо, спасибо за пример. К сожалению, скрипт ничего не делает, когда я нажимаю check_box_tag с этим идентификатором. Он также не скрыт. – DDDD

Смежные вопросы