У меня есть форма Ruby on Rails 3 с check_box_tags. Как вы устанавливаете идентификатор, а затем получаете значение в функции 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. Я пытаюсь показать или скрыть 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');
}
В соответствии с вашими инструкциями вы просто проверяете, проверен ли хотя бы один из двух определенных флажков:
$(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');
}
});
});
check_box_tag
, это первая строка, которую вы предоставляете после вызова этого метода, и она совпадает с именем. Смотрите документы здесь . Таким образом, идентификатор для этого флажка - 'survey[hardware][]'
Мне кажется, что вы пытаетесь уловить события checkbox, добавив обработчик изменений в 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();
});
});
$('#device').val('some value here')
с некоторым значением, вы сохраните это значение в элементе. Из того, что я вижу в вашем коде, это не так.