我正在努力弄清楚如何使我的代码正常运行。我目前有一个隐藏在加载时的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';
}
}
答案 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';
}
};
然后,如果美国出现在表格中,它将显示它。