【问题标题】:Show/Hide Div using jQuery with select box使用带有选择框的 jQuery 显示/隐藏 Div
【发布时间】:2012-11-23 12:03:45
【问题描述】:

我是 jQuery 新手,我正在尝试制作一个表单,该表单将根据用户从下拉选择框中选择的内容来显示和隐藏选项。我在这里搜索过,但还没有找到适合我的解决方案。我找到了一个基本上做了我想要的教程,但它似乎只适用于选择框。任何帮助表示赞赏。

这是我正在使用的 HTML 代码。

$(document).ready(function(){
    $("#emeorg").change(function(){
    switch($(this).val()){
        case "add":
            $("#test1").slideDown("slow");
            $("#changebox select:not(#emeorg, #test1)").slideUp("slow");
        break;
        case "edit":
            $("#test2").slideDown("slow");
            $("#changebox select:not(#emeorg, #edithidden)").slideUp("slow");
        break;
        case "remove":
            $("#test3").slideDown("slow");
            $("#changebox select:not(#emeorg, #removehidden)").slideUp("slow");
        break;
    }
});
});

这是我正在使用的 HTML 代码。

<div id="changebox">
<fieldset>
<legend><strong>Emergency Organization Information</strong></legend>
<div id="prompt">Select Action:</div><div id="answer"><select id="emeorg" name="emeorg">
        <option value="add">Add New Org</option>
        <option value="edit">Edit Existing Org</option>
        <option value="remove">Remove Existing Org</option>
        </select></div>
<div id="edithidden" style="display:none;">
<div id="prompt">Section to Edit:</div>
<div id="answer">
<select id="test2">
    <option>Section to Edit</option>
</select>
</div>
</div>
<div id="removehidden">
<div id="prompt">Section to Remove</div>
<div id="answer">
<select id="test3">
    <option>Section to Remove</option>
</select>
</div>
</div>
<div id="prompt">Organization Name:</div><div id="answer"><input type="text" name="companyname" id="companyname" /></div>
<div id="prompt">Organization Phone Number:</div><div id="answer"><input type="text" name="companyname" id="companyname" /></div>
<div id="prompt">Orginization Location:</div><div id="answer"><input type="text" name="companyname" id="companyname" /></div>
<div id="test3"><div id="prompt">Orginization Location Remove:</div><div id="answer"><input type="text" name="companyname" id="companyname" /></div></div>
<div id="prompt"><input type="submit" id="maininfoupdate" value="Update Information" /></div>
</fieldset>
</div>

我只是想不通为什么 div 不会显示。测试我唯一具有内联样式的是要显示的edithidden:none;。对那个没有影响,但是 removehidden 只显示选择框一秒钟然后它向上滑动。

有什么想法吗?

提前致谢。

编辑

修改后的 jQuery 代码:

$(document).ready(function(){
$("#emeorg").change(function(){
    switch($(this).val()){
        case "add":
            $("#changebox select:not(#emeorg, #test1)").slideUp("slow");
        break;
        case "edit":
            $("#edithidden").slideDown("slow");
            $("#changebox select:not(#emeorg, #edithidden)").slideUp("slow");
        break;
        case "remove":
            $("#removehidden").slideDown("slow");
            $("#changebox select:not(#emeorg, #removehidden)").slideUp("slow");
        break;
    }
});
});

修改后的 HTML 代码:

<div id="changebox">
<fieldset>
<legend><strong>Emergency Organization Information</strong></legend>
<div id="prompt">Select Action:</div><div id="answer"><select id="emeorg" name="emeorg">
        <option value="add">Add New Org</option>
        <option value="edit">Edit Existing Org</option>
        <option value="remove">Remove Existing Org</option>
        </select></div>
<div id="edithidden" style="display:none;">
<div id="prompt">Section to Edit:</div>
<div id="answer">
<select id="editcontent">
    <option>Section to Edit</option>
</select>
</div>
</div>
<div id="removehidden" style="display:none;">
<div id="prompt">Section to Remove</div>
<div id="answer">
<select id="removecontent">
    <option>Section to Remove</option>
</select>
</div>
</div>
<div id="prompt">Organization Name:</div><div id="answer"><input type="text" name="companyname" id="companyname" /></div>
<div id="prompt">Organization Phone Number:</div><div id="answer"><input type="text" name="companyname" id="companyname" /></div>
<div id="prompt">Orginization Location:</div><div id="answer"><input type="text" name="companyname" id="companyname" /></div>
<div id="prompt"><input type="submit" id="maininfoupdate" value="Update Information" /></div>
</fieldset>
</div>

现在,当我选择编辑时,edithidden 的部分向下滑动,但没有出现选择框。当我将它改回添加时,它不会隐藏编辑滑落的垃圾。我想至少正在取得一些进展。再次感谢您迄今为止的所有帮助。

【问题讨论】:

  • 我看到两个带有id="test3" 的元素,这并不是真正的非法,但它会阻止元素通过jQuery 选择器被选择。哦,现在我看到你有一个大问题。请确保每个 id 每页只出现一次。
  • 我刚刚注意到 id="test2" 和 id="test3" 仍然在那里,它们已被更改为分别反映 "#editithidden" 和 "removehidden"
  • 请显示您最近的标记...删除所有重复的 id 属性
  • 要删除的部分
  • @user1879572 这是否接近您的需求?我还是不知道test1在哪里jsfiddle.net/jU5wA

标签: jquery html select hide show


【解决方案1】:

.slideDown() 方法为匹配元素的高度设置动画。这会导致页面的下部向下滑动,为显示的项目让路。

我没有看到任何东西可以告诉我们你是如何隐藏元素的。只需使用 .show().hide() 即可。

【讨论】:

  • 我已经修改了代码,去掉了页面的其余部分,以便在这里进行测试。我在这里仅将幻灯片用于动画目的,并添加了 inline style="display:none;"到我一开始不想显示的 div。此想法是“选择”框更改其他选项幻灯片或隐藏。但是由于某种原因,整个 div 不会显示,只有选择框
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多