показать скрытые div при обновлении - PullRequest
0 голосов
/ 04 августа 2011

Мне очень трудно понять, как заставить мой код работать правильно. В настоящее время у меня есть div, который скрыт при загрузке и изменяется после выбора из выпадающего списка.

После того, как выбор (США) сделан из выпадающего списка, появляется скрытый div, и пользователь продолжает заполнять форму.

Моя проблема возникает, когда пользователь сохраняет форму, а затем возвращается на эту страницу -> div больше не виден (я полагаю, это потому, что его внутреннее значение отображения установлено на «none;»). Пользователь должен еще раз выбрать правильное значение из выпадающего списка (США) для просмотра div.

Я хочу знать, как сделать div видимым при обновлении страницы, если в выпадающем списке указано правильное значение. Я программирую на HAML, и все значения параметров (США, международные) находятся в файле constants.rb.

Я считаю, что этого можно достичь либо с помощью файлов cookie (которых я бы хотел избежать, если это возможно), либо с помощью некоторой проверки jscript / jquery при загрузке страницы ... к сожалению, я совсем не знаком с эти вещи, поэтому я прошу любую помощь.

Я искренне ценю, что вы нашли время, чтобы помочь мне. Спасибо!

код HAML:

= f.select :location, LOCATIONS, {}, :onChange => "showStates(this)", :prompt => true

#states_div{:style => "display:none;"}
  %div{:class => "label_leftalign field"}
    = f.label :state, "State"
    = f.select :state, STATES, :prompt => true

Javascript:

функция showStates (obj)

  {
    if(obj[obj.selectedIndex].value == 'United States')
    {
        document.getElementById('states_div').style.display = 'block';
    }
    else
    {
        document.getElementById('states_div').style.display = 'none';
    }
  }

1 Ответ

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

Этого можно добиться, просто запустив showStates (this) при загрузке страницы. Просто добавьте это в конец вашего шаблона:

:javascript
  window.onload = function() {
    select_location = document.getElementById('<id of select tag generated for location>')
    if(select_location[select_location.selectedIndex].value == 'United States')
    {
      document.getElementById('states_div').style.display = 'block';
    }
    else
    {
      document.getElementById('states_div').style.display = 'none';
    }
  };

Тогда, если Соединенные Штаты присутствуют в форме, они отобразят ее.

...