Javascript 下拉列表中的值显示/隐藏div并保持其状态
我是ROR的新手,希望在以下代码方面得到一些帮助 我想显示一个div(它被称为demographics),当一个特定的选择(“客户”)从下拉列表中做出时。如果从下拉列表中选择了“Customers”以外的选项,我希望demographicsv div保持隐藏 目前,我的代码部分工作正常。它显示和隐藏div;但是,当我保存页面并返回时,div被隐藏,即使在下拉列表中选择了“Customers”。这可能是因为默认设置为:display:none 是否有方法确保在进行正确选择后,该字段在页面加载时显示??我想有一种方法也可以实现相反的效果-->一个带display:block的div;如果下拉列表中的字段与所需字段不匹配,则保持隐藏状态 任何帮助都将不胜感激。谢谢您,我衷心感谢您抽出时间: 我的代码(HAML): JavascriptJavascript 下拉列表中的值显示/隐藏div并保持其状态,javascript,jquery,ruby-on-rails,drop-down-menu,show-hide,Javascript,Jquery,Ruby On Rails,Drop Down Menu,Show Hide,我是ROR的新手,希望在以下代码方面得到一些帮助 我想显示一个div(它被称为demographics),当一个特定的选择(“客户”)从下拉列表中做出时。如果从下拉列表中选择了“Customers”以外的选项,我希望demographicsv div保持隐藏 目前,我的代码部分工作正常。它显示和隐藏div;但是,当我保存页面并返回时,div被隐藏,即使在下拉列表中选择了“Customers”。这可能是因为默认设置为:display:none 是否有方法确保在进行正确选择后,该字段在页面加载时显示
function showDemographics(obj)
{
if(obj[obj.selectedIndex].value == 'Customer')
{
document.getElementById('demographics').style.display = 'block';
}
else
{
document.getElementById('demographics').style.display = 'none';
}
}
编辑::
好的,所以关键的问题是,即使下拉框中有正确的值,在页面重新加载时div仍保持隐藏状态。我想这可以通过两种方法之一来解决。每次加载页面或2时运行某种验证。饼干
不幸的是,我不太精通Javascript或jQuery。。。我从来没有在网站上实现过cookies,如果可能的话,我宁愿避免使用cookies
有人能帮我写一个脚本来验证下拉列表中是否有客户,并相应地显示/隐藏一个div吗?谢谢,也感谢卡洛斯·帕迪拉和M.塞弗迄今为止的帮助 虽然您没有在代码中使用jQuery,但是您已经用jQuery标记了这个问题,但是我假设如果我给您一些jQuery代码,这是可以的:
$(function() {
$('#who').change(function() {
if ($(this).val() == 'Customer') {
$('demographics').show();
} else {
$('demographics').hide();
}
}).change();
}
请注意,您需要为
选择提供id
(在本例中为who
)以使其正常工作。虽然您没有在代码中使用jQuery,但您已经用jQuery标记了该问题,但我假设如果我给您一些jQuery代码就可以了:
$(function() {
$('#who').change(function() {
if ($(this).val() == 'Customer') {
$('demographics').show();
} else {
$('demographics').hide();
}
}).change();
}
请注意,您需要为select
提供一个id
(在本例中为who
)以使其工作。我想您可以在页面加载期间使用条件语句进行检查。您可以根据选择对象(下拉列表)中option:selected元素的值(“客户”)来建立div的可见性(或缺少可见性)。可能通过文档头部的脚本(只要是短脚本)。此外,通过这样做,您不需要从一开始就设置display属性。它将根据页面加载期间选择的条件触发
正如你所说,这样做也可以得到相反的结果
希望能有帮助 我想您可以在页面加载期间使用条件语句进行检查。您可以根据选择对象(下拉列表)中option:selected元素的值(“客户”)来建立div的可见性(或缺少可见性)。可能通过文档头部的脚本(只要是短脚本)。此外,通过这样做,您不需要从一开始就设置display属性。它将根据页面加载期间选择的条件触发
正如你所说,这样做也可以得到相反的结果
希望能有帮助 以上答案以自己的方式正确无误。。。下面的链接显示页面加载条件语句所需的实际代码:
以上答案以自己的方式正确无误。。。下面的链接显示页面加载条件语句所需的实际代码:
对不起。。。这对我不起作用。我是否应该更改HAML中的某些内容以触发jquery函数?感谢您抽出时间,如果您还没有将jquery添加到rails应用程序中,您必须先将其添加到rails应用程序中。使用jqueryrails
gem。但当然,在纯javascript中也可以这样做,只是更复杂而已。我真的建议你多读一些关于jquery的内容。很抱歉。。。这对我不起作用。我是否应该更改HAML中的某些内容以触发jquery函数?感谢您抽出时间,如果您还没有将jquery添加到rails应用程序中,您必须先将其添加到rails应用程序中。使用jqueryrails
gem。但当然,在纯javascript中也可以这样做,只是更复杂而已。我真的建议你多读一些关于jquery的内容。Carlos,这是有道理的,但是,我不知道该怎么做(例如:不知道要写什么代码)。但是是的,你是对的。。。这似乎是合乎逻辑的。希望这会有所帮助:只需在选项之间复制“粘贴选定的=“选定的”,并根据执行的条件查看div是否可见。当然,您必须每次都运行该方法,以查看它在页面加载时是如何发生的。Carlos,不幸的是,我无法添加该代码,因为我的选项字段位于Constants.rb中,在HAML中不可用。。。除非有办法围绕这个问题进行编码。由于我不熟悉您的项目,我建议将此代码放入.js文件中,然后在应用程序的主视图(视图/布局文件夹中的一个erb文件)中引用此文件。通过在整个应用程序中引用此javascript文件,您应该能够以您认为合适的任何方式与DOM交互。另一方面,我自己也不熟悉HAML,可能我对所有配置的方式假设得太多了。但是,好吧,你明白了。卡洛斯,这是有道理的,但是,我不知道我该怎么做(即:不知道要写什么代码)。但是是的,你是对的。。。这似乎是合乎逻辑的。希望这能有所帮助:只需在选项之间复制“粘贴选定的=“选定的”,并根据执行的条件查看div的可见与否。当然,您必须每次都运行该方法,以查看它在页面加载时的情况。Carlos,不幸的是,我不能