使用JavaScript隐藏/显示高级选项
Hide/show advanced option using JavaScript
我正在制作一个HTML表单,我想在"高级选项"下设置一些字段。我想做一个"高级选项"链接,也许有一个"加号",这样当用户点击链接或符号,这些高级字段显示出来。我如何在JavaScript中做到这一点?我试着在谷歌上搜索"隐藏/显示高级选项"之类的东西,但找不到解决方案。
<form ... />
<label>
Title
<input id="title" name="title" size="40" type="text" value="" />
</label>
<label>
Year
<input id="year" name="year" size="20" type="text" value="" />
</label>
<label>
Year
<input id="comment" name="comment" size="40" type="text" value="" />
</label>
</form>
例如,这里我想把"comment"字段提前
<a href='#' class='advanced'>Advanced Options</a>
<div id='advancedOptions'><!-- Form stuff here --></div>
<script type='text/javascript'>
$(document).ready(function () {
$('#advancedOptions').hide();
$('.advanced').click(function() {
if ($('#advancedOptions').is(':hidden')) {
$('#advancedOptions').slideDown();
} else {
$('#advancedOptions').slideUp();
}
});
});
</script>
它会在加载时隐藏advancedOptions元素,当你点击a标签时,它会检查advancedOptions是否隐藏,如果是,它会显示它,如果它不是隐藏的,它会隐藏它。你需要;
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
在你使用的页面顶部的,我知道这是JQuery,但是学习JQuery对于将来的参考会很有用
你正在寻找这样的东西(纯JS):
function more(obj) {
var content = document.getElementById("showMore");
if (content.style.display == "none") {
content.style.display = "";
obj.innerHTML = "-";
} else {
content.style.display = "none";
obj.innerHTML = "+";
}
}
这个函数检查你的内容的可见性,如果它是隐藏的,显示它,反之亦然。它还把正号变成了负号。下面是修改后的HTML:
<a href="#" onclick="more(this);">+</a>
<br>
<label id="showMore" style="display: none;">
Year
<input id="comment" name="comment" size="40" type="text" value="" />
</label>
和一个演示:http://jsfiddle.net/uSqcg/
创建一个div元素,创建一个默认隐藏的CSS规则,在div元素上添加onmouseover和onmouseout事件,并将以下函数关联到这些事件:
function showSomething(textToShow, container) {
var yourElement = $('#yourDivElement');
yourElement.removeClass('hidden');
var w = container.getClientRects()[0].width;
var h = container.getClientRects()[0].height;
var t = container.getClientRects()[0].top;
var l = container.getClientRects()[0].left;
var st = document.documentElement.scrollTop;
var sl = document.documentElement.scrollLeft;
if (st == 0 && document.body.scrollTop > st)
st = document.body.scrollTop;
if (sl == 0 && document.body.scrollLeft > sl)
sl = document.body.scrollLeft;
yourElement.css('top', t + st + h / 3 * 2);
yourElement.css('left', l + sl + w / 3 * 2);
yourElement.html(textToShow);
var lines = textToShow.length / 20;
yourElement.css('height', 20 + lines * 10);
}
function hideSomething() {
$('#yourDivElement').addClass('hidden');
}
只是以防万一(一个CSS规则隐藏)
.hidden {
display: none;
}
…以防万一
<div onmouseover="showSomething('show this', this);" onmouseout="hideSomething();" class="hidden"></div>
这将定位浮动对话框(类似于alt)相关的父对象的div(包含你的div元素)…
简单;)
试试这段代码,这里是演示
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('.advanced').click(function()
{
$('#hide').toggleClass("hidden");
});
});
</script>
<style>
.hidden
{
display:none;
}
</style>
</head>
<body>
<form >
<label>
Title
<input id="title" name="title" size="40" type="text" value="" />
</label><br/>
<label>
Year
<input id="year" name="year" size="20" type="text" value="" />
</label><br/>
<label class="advanced">
+
</label><br/>
<label id="hide" class="hidden">
Year
<input id="comment" name="comment" size="40" type="text" value="" />
</label>
</form>
</body>
</html>
相关文章:
- yammer在手机上嵌入评论不显示回复选项
- 引导导航选项卡未突出显示活动选项卡
- 始终在 jQuery 自动完成中显示特定选项,即使它与输入不匹配
- 根据以前的选择显示选择选项
- 在屏幕上显示选择选项图像
- 使用 Javascript 在导航栏中显示当前选项卡
- 第一张幻灯片不会显示在选项卡内的 jQuery Royal Slider 中
- 我创建了一个下拉列表,以及如何显示所选项目的其他列数据
- 如何在Jquery中显示选择选项之前更新这些选项
- 下拉显示悬停选项
- 未定义显示在选项中
- 在Javascript中,如何在文本框中显示特定选项的数字
- 在范围中显示活动选项卡的名称
- 带有 d3 的嵌入式 Google 地图.js叠加层显示 UI 选项和叠加元素,但不是地图本身
- 根据单独选择的选项显示 HTML 选项
- Twitter Typeahead.js:点击/聚焦时显示所有选项
- 从选择中选择所有选项并显示每个选项
- AngularJs:选择在使用ng-repeat时不显示任何选项的下拉列表
- 如何声明,以便在 jquery 移动 UI 中突出显示默认选项卡
- 使用JavaScript隐藏/显示高级选项