在刷新时显示隐藏的div

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

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

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

我想知道如果在Dropbox中正确的值,我可以在页面刷新时使div可见。 我在HAML编程,所有选项值(美国,国际)都位于constants.rb文件中。

我相信这可以通过cookie(我希望尽可能避免)或者通过页面加载时的某种jscript / jqueryvalidation来实现…不幸的是我对这些事情都不熟悉,所以我请求任何帮助。

我真诚地感谢您抽出宝贵时间帮助我。 谢谢!

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'; } } 

您可以通过在页面加载时运行showStates(this)来实现此目的。 只需将其添加到模板的底部:

 :javascript window.onload = function() { select_location = document.getElementById('') if(select_location[select_location.selectedIndex].value == 'United States') { document.getElementById('states_div').style.display = 'block'; } else { document.getElementById('states_div').style.display = 'none'; } }; 

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