【问题标题】:Show/Hide divs on form submit在表单提交上显示/隐藏 div
【发布时间】:2010-11-14 22:27:07
【问题描述】:

我已经解决了大约 90% 的问题,但似乎无法得到最后的 10%:

我有一个要求用户选择位置的表单。在选择时,我希望页面(和请求表单)淡出不透明,并在顶部淡出一个新的 div,其中包含定价信息。

目前,对于第一个选定选项 (novato),一切正常,但在列表中的任何其他选项上,页面和请求表单 div 都会淡出,并且新的定价 div 不可见。

我很困惑,我很确定我只是错过了一些愚蠢的东西(作为一个新手)。任何帮助表示赞赏!

申请表:

<form id="locations">
<select>
<option>Choose a location</option>
<option></option>
<option id="novato" value="novato">Novato</option>
<option id="sanleandro" value="sanleandro">San Leandro</option>
<option id="livermore" value="livermore">Livermore</option>
<option id="sanjose" value="sanjose">San Jose</option>
</select>
<input type="submit" id="submit" value="go"/>
</form>

JS:

> $(function() {
>   $("#locations").submit(function() {
>       if ($("#novato").attr("selected")) {
>           $("#pricing_novato").fadeIn("normal");
>           $("#page").fadeTo("normal", 0.1);
>           $("#pricing_novato").css({top:"0",left:"50%",margin:"20px
> 0 0 -"+($("#pricing_novato").width() /
> 2)+"px"});
>           $("#pricing_selector").fadeOut("normal");       
           }else if($("#sanleandro").attr("selected")) {
>           $("#pricing_sanleandro").fadeIn("normal");
>           $("#page").fadeTo("normal", 0.1);
>           $("#pricing_sanleandro").css({top:"0",left:"50%",margin:"20px
> 0 0
> -"+($("#pricing_sanleandro").width() / 2)+"px"});
>           $("#pricing_selector").fadeOut("normal");       
           }else if($("#livermore").attr("selected")) {
>           $("#pricing_livermore").fadeIn("normal");           $("#page").fadeTo("normal", 0.1);
>           $("#pricing_livermore").css({top:"0",left:"50%",margin:"20px
> 0 0
> -"+($("#pricing_livermore").width() / 2)+"px"});
>           $("#pricing_selector").fadeOut("normal");       
           }else if($("#sanjose").attr("selected")) {
>           $("#pricing_sanjose").fadeIn("normal");
>           $("#page").fadeTo("normal", 0.1);
>           $("#pricing_sanjose").css({top:"0",left:"50%",margin:"20px
> 0 0 -"+($("#pricing_sanjose").width()
> / 2)+"px"});
>           $("#pricing_selector").fadeOut("normal");       
           } 
  }); 
});

div:

<div id="pricing_novato">content</div>
<div id="pricing_sanleandro">content</div>
<div id="pricing_livermore">content</div>
<div id="pricing_sanjose">content</div>

【问题讨论】:

    标签: jquery forms show-hide


    【解决方案1】:

    我刚刚用你的代码创建了一个 jsfiddle:http://jsfiddle.net/Efb32/6/

    我更改了一些东西,看看代码:添加了一些样式,更改了 css(...) 更改以使其适合,将 return false 添加到表单提交代码中以便它在 jsfiddle 中工作并添加了 #page和代码中使用的#pricing_selector div。所有 4 个选项的行为似乎都相同。

    我想我给出的输出我看不出有什么问题 - 你能检查一下 jsfiddle 上的代码是否符合你的预期吗?

    【讨论】:

    • 哇!那很奇怪。我看到你做了什么,但仍然不知道为什么我的坏了。这是实时链接:76.103.255.69/earthcare/Products_residential/index2.aspx
    • 我的猜测是它与样式有关。尝试使用相同的 css(...) 行并添加 position: relative 样式 - 试验一下,看看这是否是问题。
    • 我的样式表或包含文件中一定有问题,但您的解决方案有效!非常感谢!
    【解决方案2】:

    您是否尝试过将当前选择的选项分配给一个变量,然后对其进行测试?

    var selectedLocation = $("select option:selected").val();
    

    另外,如果 #page 是您的容器,则不会这样做:

    $("#page").fadeTo("normal", 0.1);
    

    淡出容器中包含的所有内容?我只是假设因为我在你的代码中看不到它。

    您还可以尝试放置一些控制台日志记录或简单地提醒您尝试测试的值,以让您了解代码中发生的情况

    【讨论】:

    • 非常感谢您的回复!我向过渡添加了警报,以确认我的选择是正确的,并且该部分有效。 (好主意!)定价 div 实际上在一个包含文件中,并且设置在页面 div 之外(但在正文中),因此该部分也可以工作。
    • 我试图找出 var selectedLocation = $("select option:selected").val();部分。我的测试会是这样吗?:if ($("#novato") = "selectedLocation")
    • 没关系 :) 你的测试看起来像: if (selectedLocation = "novato") 等等...看起来你已经修好了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2014-11-24
    • 2013-08-03
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多