значение из выпадающего списка показывает / скрывает div и сохраняет его состояние - PullRequest
0 голосов
/ 04 августа 2011

Я относительно новичок в ROR и хотел бы получить помощь по следующему коду.

Я хотел бы показать div (это называется демография), когда из выпадающего списка сделан определенный выбор («Клиенты»). Если из выпадающего меню выбрана опция, отличная от «Клиенты», я бы хотел, чтобы div demographicsv оставался скрытым.

В настоящее время мой код частично работает. Это показывает и скрывает div; однако, когда я сохраняю страницу и возвращаюсь к ней, div скрывается, даже если в раскрывающемся списке выбран «Клиенты». Это может быть связано с тем, что по умолчанию установлено следующее: display: none.

Есть ли способ убедиться, что поле отображается при загрузке страницы после правильного выбора? И я предполагаю, что способ сделать обратное тоже верно -> div с display: block; остается скрытым, если поле из раскрывающегося списка не соответствует требуемому полю.

Любая помощь будет чрезвычайно признательна. Спасибо, и я искренне ценю ваше время:

мой код (HAML):

= f.select :who, WHO, {}, :onChange => "showDemographics(this)", :prompt => true

#demographics{:style => "display:none;"}
  %p.information
    please fill out the following demographics.
  %div{:class => "label_leftalign field"}
    = f.label :age, "Age"
    = f.select :age, AGES, :prompt => true
  %div{:class => "label_leftalign field"}
    = f.label :race, 
    = f.select :race, RACES, :prompt => true

Javascript

  function showDemographics(obj)
  {
    if(obj[obj.selectedIndex].value == 'Customer')
    {
        document.getElementById('demographics').style.display = 'block';
    }
    else
    {
        document.getElementById('demographics').style.display = 'none';
    }
  }

EDIT :: Итак, ключевая проблема заключается в том, что при перезагрузке страницы div остается скрытым, даже если в раскрывающемся списке указано правильное значение. Я полагаю, что это можно решить одним из двух способов: 1. запускать какую-либо проверку при каждой загрузке страницы или 2. файлы cookie.

К сожалению, я не очень хорошо разбираюсь в Javascript или jQuery ... и я никогда не применял куки на сайте и предпочел бы по возможности избегать их использования.

Может ли кто-нибудь помочь мне написать скрипт, который проверяет наличие Клиента в выпадающем меню и соответственно показывает / скрывает div? Спасибо, и спасибо Карлосу Пардилья и М. Сайферу за их помощь.

Ответы [ 3 ]

3 голосов
/ 04 августа 2011

Вы пометили вопрос с помощью jQuery, хотя вы не используете его в коде, но я просто предположу, что это нормально, если я дам вам некоторый код jQuery:

$(function() {
  $('#who').change(function() {
    if ($(this).val() == 'Customer') {
      $('demographics').show();
    } else {
      $('demographics').hide();
    }
  }).change();
}

Обратите внимание, что вам нужноselect и id (в данном случае who) для его работы.

0 голосов
/ 14 августа 2011

Ответы выше, где по-своему правильны ... ссылка ниже показывает фактический код, необходимый для условного оператора при загрузке страницы:

показывать скрытые div при обновлении

0 голосов
/ 04 августа 2011

Полагаю, вы можете использовать условный оператор для проверки во время загрузки страницы. Вы можете установить видимость (или ее отсутствие) элемента div в зависимости от значения («Клиенты») параметра: выбранный элемент в выбранном объекте (раскрывающийся список). Может быть, с помощью сценария в заголовке документа (если это короткий сценарий). Кроме того, при этом вам не нужно устанавливать свойство display с самого начала. Он будет срабатывать в зависимости от выбранного условия во время загрузки страницы.

Это можно сделать, чтобы получить противоположный результат, как вы сказали.

Надеюсь, это поможет!

...