在刷新时显示隐藏的div

时间:2011-08-04 06:54:33

标签: javascript jquery ruby-on-rails drop-down-menu show-hide

我正在努力弄清楚如何使我的代码正常运行。我目前有一个隐藏在加载时的div,一旦从dropbox中做出选择就会更改。

从保管箱中选择(美国)后,会显示隐藏的div,并且用户会继续填写表单。

当用户保存表单时,我的问题就出现了,然后返回到该页面 - > div不再可见(我相信这是因为它的固有显示值设置为“none;”)。用户必须再次从下拉列表(美国)中选择适当的值才能查看div。

如果Dropbox中的值正确,我想知道如何在页面刷新时显示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:

function 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 个答案:

答案 0 :(得分:1)

您可以通过在页面加载时运行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';
    }
  };

然后,如果美国出现在表格中,它将显示它。