0

一些网页具有可以折叠子菜单的“转动”三角形控件。我想要同样的行为,但对于表单中的部分。

假设我有一个包含贷方、姓名、地址和城市输入的表格。我网站的一些用户将需要第二组这些字段。我想为大多数用户隐藏额外的字段。需要额外字段的人应该可以一键访问它们。我该怎么做?

4

3 回答 3

2

啊,我想你的意思是你想在你的表单上有可折叠的部分。

简而言之:

  1. 把你要折叠的内容放在自己的DIV中,首先CSS属性为“display:none”
  2. 在运行 JavaScript 以切换显示属性的三角形图像(或“隐藏/显示”之类的文本)周围包裹一个链接(A 标记)。
  3. 如果您希望三角形在该部分展开/显示时“转动”,您可以让 JavaScript 同时换出图像。

这里有一个更好的解释:How to Create a Collapsible DIV with Javascript and CSS [ Update 2013-01-27该文章不再在 Web 上提供,您可以参考此 HTML 页面的来源以获取受本文启发的应用示例]

或者,如果您使用“CSS 折叠部分”之类的词进行 Google 搜索,您会发现许多其他教程,包括超级精美的教程(例如http://xtractpro.com/articles/Animated-Collapsible-Panel.aspx)。

于 2009-08-11T20:55:43.923 回答
1

使用 JavaScript 隐藏/显示元素的绝对最基本的方法是设置元素的可见性属性。

给定您的示例,假设您在页面上定义了以下表单:

<form id="form1">
    <fieldset id="lenderInfo">
        <legend>Primary Lender</legend>
        <label for="lenderName">Name</label>
        <input id="lenderName" type="text" />
        <br />
        <label for="lenderAddress">Address</label>
        <input id="lenderAddress" type="text" />
    </fieldset>
    <a href="#" onclick="showElement('secondaryLenderInfo');">Add Lender</a>
    <fieldset id="secondaryLenderInfo" style="visibility:hidden;">
        <legend>Secondary Lender</legend>
        <label for="secondaryLenderName">Name</label>
        <input id="secondaryLenderName" type="text" />
        <br />
        <label for="secondaryLenderAddress">Address</label>
        <input id="secondaryLenderAddress" type="text" />
    </fieldset>
</form>

这里有两点需要注意:

  1. 第二组输入字段最初使用一点内联 css 隐藏。
  2. “添加贷方”链接正在调用一个 JavaScript 方法,该方法将为您完成所有工作。当您单击该链接时,它将动态设置该元素的可见性样式,使其显示在屏幕上。

showElement()元素 id作为参数,如下所示:

function showElement(strElem) {
    var oElem = document.getElementById(strElem);

    oElem.style.visibility = "visible";

    return false;
}

Almost every JavaScript approach is going to be doing this under the hood, but I would recommend using a framework that hides the implementation details away from you. Take a look at JQuery, and JQuery UI in order to get a much more polished transition when hiding/showing your elements.

于 2009-08-11T20:57:48.863 回答
0

Here's a simple css only solution that uses a checkbox:

.hideNext:not(:checked)+div {
  max-height: 0;
  overflow: hidden;
}
<label for="ch1">More Options</label><input id="ch1" type="checkbox" class="hideNext" />
<div>Whatever you want to hide.</div>
and then more stuff below..

于 2017-09-25T00:26:18.980 回答