Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下拉列表中的值显示/隐藏div并保持其状态_Javascript_Jquery_Ruby On Rails_Drop Down Menu_Show Hide - Fatal编程技术网

Javascript 下拉列表中的值显示/隐藏div并保持其状态

Javascript 下拉列表中的值显示/隐藏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 是否有方法确保在进行正确选择后,该字段在页面加载时显示

我是ROR的新手,希望在以下代码方面得到一些帮助

我想显示一个div(它被称为demographics),当一个特定的选择(“客户”)从下拉列表中做出时。如果从下拉列表中选择了“Customers”以外的选项,我希望demographicsv div保持隐藏

目前,我的代码部分工作正常。它显示和隐藏div;但是,当我保存页面并返回时,div被隐藏,即使在下拉列表中选择了“Customers”。这可能是因为默认设置为:display:none

是否有方法确保在进行正确选择后,该字段在页面加载时显示??我想有一种方法也可以实现相反的效果-->一个带display:block的div;如果下拉列表中的字段与所需字段不匹配,则保持隐藏状态

任何帮助都将不胜感激。谢谢您,我衷心感谢您抽出时间:

我的代码(HAML):

Javascript

  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,不幸的是,我不能