JQuery возвращает элемент как ноль

0

Ruby on Rails 3. У меня есть div id, который я пытаюсь скрыть или показать на основе значения выбранного флажка. Мой скрипт теперь не может получить элемент по id. Он возвращает null. Я попробовал идентификатор ввода и имя. Оба возвращают null.

Вот сценарий:

$(document).ready(function() {
$('#device').change(function(event){ 
var hardware = document.getElementById('#survey_hardware_');
if (($(hardware).find("input[value='IP Phones']:checked").length) || ($(hardware).find("input[value='IP PBX Systems']:checked").length))
{
    $('#phonepbx').css('display', 'inline');
}
else
{
    $('#phonepbx').css('display', 'none');
}
});
});

Это вынесенный HTML-вопрос:

<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;"><input id="survey_hardware_" name="survey[hardware][]" type="checkbox" value="IP Phones" /> IP Phones</li>
<li style="display:block;"><input id="survey_hardware_" name="survey[hardware][]" type="checkbox" value="IP PBX Systems" /> IP PBX Systems </li>
<li style="display:block;"><input id="survey_hardware_" name="survey[hardware][]" type="checkbox" value="IP Security/Surveillance Systems" /> IP Security/Surveillance Systems</li>
<li style="display:block;"><input id="survey_hardware_" name="survey[hardware][]" type="checkbox" value="IP infrastructure (cabling, switches...etc.)" /> IP infrastructure (cabling, switches...etc.)</li>
</ul>
</div>

Реферат:

document.getElementById('#survey_hardware_');

возвращает null. Я попробовал #survey [hardware] [] и #survey [hardware] [0], и все они имеют значение null. Как получить элемент? Спасибо (пожалуйста, не ненавидите мой стиль li :)

Решение

function checkHardware() {
if ($('#device input:checkbox:eq(0)').is(':checked') || $('#device input:checkbox:eq(1)').is(':checked'))
{
    $('#phonepbx').css('display', 'block');
}

и т.д...

  • 1
    Можете ли вы иметь несколько идентификаторов с одним и тем же именем?
  • 1
    Вы не должны иметь более одного элемента с одинаковым атрибутом id. Это вызовет проблемы при нацеливании на элементы через JS, и это противоречит стандартам.
Показать ещё 1 комментарий
Теги:
ruby-on-rails-3

3 ответа

2
Лучший ответ

Попробуйте без '#':

document.getElementById('survey_hardware_');

Или напрямую используйте jQuery:

$('#survey_hardware_')
  • 0
    Как легко исправить! : D
1

Почему вы используете getElementById? У вас есть jquery, поэтому используйте:

$("#survey_hardware_").find(
  • 0
    Хорошая идея. Я буду использовать эту логику.
0

Что-то вроде: (обратите внимание на новый и уникальный идентификатор)

<li style="display:block;"><input id="phones" name="survey[hardware][]" type="checkbox" value="IP Phones" /> IP Phones</li>
<li style="display:block;"><input id="pbx" name="survey[hardware][]" type="checkbox" value="IP PBX Systems" /> IP PBX Systems </li>
<li style="display:block;"><input id="security" name="survey[hardware][]" type="checkbox" value="IP Security/Surveillance Systems" /> IP Security/Surveillance Systems</li>
<li style="display:block;"><input id="infra" name="survey[hardware][]" type="checkbox" value="IP infrastructure (cabling, switches...etc.)" /> IP infrastructure (cabling, switches...etc.)</li>

а затем напрямую использовать jQuery: $('#new_id_here') как уже было предложено.

  • 0
    Вопросы находятся в файле erb. HTML отображается так, как показано. Так выглядит вопрос в RoR. <li style = "display: block;"> <% = check_box_tag 'survey [hardware] []', "IP-телефоны"%> IP-телефоны </ li>
  • 1
    Извините, что упустил этот момент - вы видели этот вопрос? stackoverflow.com/questions/992094/...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню