Show/Hide 带有 JQuery 移动滑块的字段集
Show/Hide Fieldset with JQuery Mobile Sliders
我将有大约 10 个字段集,我希望每个字段集都根据建筑物数量滑块的值显示。
我该怎么做?
这是我目前拥有的:
http://jsfiddle.net/wvVmT/1061/
HTML:
<div class="input-group">
<div class="col-half">
<h4>Number of Buildings</h4>
<input type="range" name="NoBslider" id="NoBslider" data-popup-enabled="true" value="0" min="0" max="10">
</div>
<div class="col-half">
<h4>Number of Bulk Meters</h4>
<input type="range" name="points" id="points" data-popup-enabled="true" value="0" min="0" max="100">
</div>
</div>
<fieldset data-role="collapsible" class="building">
<legend>Building 1</legend>
<label for="maila">Building Street</label>
<div class="input-group">
<div class="col-half">
<div class="input-group-icon">
<div class="col-third">
<input type="text" placeholder="Street Number" name="maila" />
</div>
<div class="input-icon"><i class="fa fa-info-circle" style="padding-top:20px"></i></div>
</div>
<div class="col-third">
<input type="text" placeholder="Street Name" name="maila" />
</div>
<div class="col-third">
<input type="text" placeholder="Street Type" name="maila" />
</div>
</div>
</div>
<div class="input-group">
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Residential Units" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Commercial Units" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Commons" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
</div>
</fieldset>
<fieldset data-role="collapsible" class="building">
<legend>Building 2</legend>
<label for="maila">Building Street</label>
<div class="input-group">
<div class="col-half">
<div class="input-group-icon">
<div class="col-third">
<input type="text" placeholder="Street Number" name="maila" />
</div>
<div class="input-icon"><i class="fa fa-info-circle" style="padding-top:20px"></i></div>
</div>
<div class="col-third">
<input type="text" placeholder="Street Name" name="maila" />
</div>
<div class="col-third">
<input type="text" placeholder="Street Type" name="maila" />
</div>
</div>
</div>
<div class="input-group">
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Residential Units" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Commercial Units" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Commons" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
</div>
</fieldset>
JQuery:
hidebuildings($("#NoBslider"));
$("#NoBslider").on("change", function () {
hidebuildings($(this));
});
function hidebuildings(slider) {
var theVal = slider.val();
if (theVal = 2){
$('.building').show();
$('.building1').show();
}
});
只是想测试一下,看看我是否可以让字段集显示我是否将滑块设置为值 2。它当然不起作用。
Simon,这样的过滤器实现起来并不难,但你问得对,因为把所有东西放在一起可能会有很多细微的问题。
首先,如果您需要相同类型元素的预定义列表,请确保您的标记中有唯一标识符 - 用于标签、元素等,您需要这些 - 否则什么都不会工作。
我建议您将可折叠组件放入可折叠集中,您最终会为整个组提供一个漂亮的 JQM 样式。然后通过将 class .ui-screen-hidden
添加到不需要的 collapsibleset 子项来完成过滤器。之后,只需调用 $("selector").collapsibleset("refresh");
工作示例:
$(document).on("pagecreate", "#page-one", function() {
$("#buildings .ui-collapsible").each(function(index) {
$(this).addClass("ui-screen-hidden");
});
$("#NoBslider").on("change", function() {
var val = $(this).val();
$("#buildings .ui-collapsible").each(function(index) {
$(this).toggleClass("ui-screen-hidden", index >= val);
});
$("#buildings").collapsibleset("refresh");
});
});
.ui-slider input {
display: none !important;
}
.ui-slider .ui-slider-track {
margin-left: 20px !important;
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.css">
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.js"></script>
</head>
<body>
<div data-role="page" id="page-one">
<div data-role="header">
<h4>Please choose...</h4>
</div>
<div data-role="main" class="ui-content">
<div class="ui-grid-a">
<div class="ui-block-a">
<div class="ui-bar ui-bar-a">
Nr. of Buildings
</div>
<input type="range" name="NoBslider" id="NoBslider" data-popup-enabled="true" value="0" min="0" max="10">
</div>
<div class="ui-block-b">
<div class="ui-bar ui-bar-a">
Nr. of Bulk Meters
</div>
<input type="range" name="points" id="points" data-popup-enabled="true" value="0" min="0" max="100">
</div>
</div>
<div data-role="collapsible-set" id="buildings">
<fieldset data-role="collapsible">
<legend>Building 1</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 2</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 3</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 4</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 5</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 6</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 7</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 8</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 9</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 10</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
</div>
</div>
</div>
</body>
</html>
另请注意,当 JQM 引发 onpagecreate
事件时,滑块的 onchange 事件处理程序应附加到所需的元素。
我将有大约 10 个字段集,我希望每个字段集都根据建筑物数量滑块的值显示。
我该怎么做?
这是我目前拥有的:
http://jsfiddle.net/wvVmT/1061/
HTML:
<div class="input-group">
<div class="col-half">
<h4>Number of Buildings</h4>
<input type="range" name="NoBslider" id="NoBslider" data-popup-enabled="true" value="0" min="0" max="10">
</div>
<div class="col-half">
<h4>Number of Bulk Meters</h4>
<input type="range" name="points" id="points" data-popup-enabled="true" value="0" min="0" max="100">
</div>
</div>
<fieldset data-role="collapsible" class="building">
<legend>Building 1</legend>
<label for="maila">Building Street</label>
<div class="input-group">
<div class="col-half">
<div class="input-group-icon">
<div class="col-third">
<input type="text" placeholder="Street Number" name="maila" />
</div>
<div class="input-icon"><i class="fa fa-info-circle" style="padding-top:20px"></i></div>
</div>
<div class="col-third">
<input type="text" placeholder="Street Name" name="maila" />
</div>
<div class="col-third">
<input type="text" placeholder="Street Type" name="maila" />
</div>
</div>
</div>
<div class="input-group">
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Residential Units" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Commercial Units" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Commons" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
</div>
</fieldset>
<fieldset data-role="collapsible" class="building">
<legend>Building 2</legend>
<label for="maila">Building Street</label>
<div class="input-group">
<div class="col-half">
<div class="input-group-icon">
<div class="col-third">
<input type="text" placeholder="Street Number" name="maila" />
</div>
<div class="input-icon"><i class="fa fa-info-circle" style="padding-top:20px"></i></div>
</div>
<div class="col-third">
<input type="text" placeholder="Street Name" name="maila" />
</div>
<div class="col-third">
<input type="text" placeholder="Street Type" name="maila" />
</div>
</div>
</div>
<div class="input-group">
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Residential Units" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Commercial Units" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
<div class="col-third">
<div class="input-group input-group-icon">
<input type="text" placeholder="Number of Commons" name="comments" />
<div class="input-icon"><i class="fa fa-file-text" style="padding-top:20px"></i></div>
</div>
</div>
</div>
</fieldset>
JQuery:
hidebuildings($("#NoBslider"));
$("#NoBslider").on("change", function () {
hidebuildings($(this));
});
function hidebuildings(slider) {
var theVal = slider.val();
if (theVal = 2){
$('.building').show();
$('.building1').show();
}
});
只是想测试一下,看看我是否可以让字段集显示我是否将滑块设置为值 2。它当然不起作用。
Simon,这样的过滤器实现起来并不难,但你问得对,因为把所有东西放在一起可能会有很多细微的问题。
首先,如果您需要相同类型元素的预定义列表,请确保您的标记中有唯一标识符 - 用于标签、元素等,您需要这些 - 否则什么都不会工作。
我建议您将可折叠组件放入可折叠集中,您最终会为整个组提供一个漂亮的 JQM 样式。然后通过将 class .ui-screen-hidden
添加到不需要的 collapsibleset 子项来完成过滤器。之后,只需调用 $("selector").collapsibleset("refresh");
工作示例:
$(document).on("pagecreate", "#page-one", function() {
$("#buildings .ui-collapsible").each(function(index) {
$(this).addClass("ui-screen-hidden");
});
$("#NoBslider").on("change", function() {
var val = $(this).val();
$("#buildings .ui-collapsible").each(function(index) {
$(this).toggleClass("ui-screen-hidden", index >= val);
});
$("#buildings").collapsibleset("refresh");
});
});
.ui-slider input {
display: none !important;
}
.ui-slider .ui-slider-track {
margin-left: 20px !important;
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.css">
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.js"></script>
</head>
<body>
<div data-role="page" id="page-one">
<div data-role="header">
<h4>Please choose...</h4>
</div>
<div data-role="main" class="ui-content">
<div class="ui-grid-a">
<div class="ui-block-a">
<div class="ui-bar ui-bar-a">
Nr. of Buildings
</div>
<input type="range" name="NoBslider" id="NoBslider" data-popup-enabled="true" value="0" min="0" max="10">
</div>
<div class="ui-block-b">
<div class="ui-bar ui-bar-a">
Nr. of Bulk Meters
</div>
<input type="range" name="points" id="points" data-popup-enabled="true" value="0" min="0" max="100">
</div>
</div>
<div data-role="collapsible-set" id="buildings">
<fieldset data-role="collapsible">
<legend>Building 1</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 2</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 3</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 4</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 5</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 6</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 7</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 8</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 9</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
<fieldset data-role="collapsible">
<legend>Building 10</legend>
<fieldset><input type="text" placeholder="Street Name"></fieldset>
</fieldset>
</div>
</div>
</div>
</body>
</html>
另请注意,当 JQM 引发 onpagecreate
事件时,滑块的 onchange 事件处理程序应附加到所需的元素。