我有一个有三个控件的表单。使用这三个控件加载Te页面。其中一个控件是由五个项填充的拖放框。每个选择都有自己的控件要显示。我已经隐藏了所有五个div,并将显示根据选定的值。
我已经编写了java脚本函数,但它没有隐藏加载的控件,而是使用该选择的控件显示新窗体或div。
问题:如何根据下拉列表中的选择隐藏和显示div?
我试过这个示例
下面是我的代码;
Java脚本
<script type="text/javascript">
$(document).ready(function () {
$('#ddlControls').on('change', function () {
if (this.value == 'Users') {
$("#divUsers").show();
alert("Users");
}
else if (this.value == 'Orders') {
$("#divUsers").hide();
$("#divOrders").show();
alert("orders here");
}
else if (this.value == 'Contractors') {
$("#divOrders").hide();
$("#divContractors").show();
alert("Contractors here");
}
else if (this.value == 'Permanets') {
$("#divContractors").hide();
$("#divPermanets").show();
alert("Permanets here");
}
else if (this.value == 'Reports') {
$("#Permanets").hide();
$("#divReports").show();
alert("Reports here");
}
else {
$("#divReports").hide();
}
});
});
</script>
查看页面
<section>
<div class="row">
<fieldset class="fieldsetStyle">
<form role="form">
<div class="box-body">
<div class="col-md-5" id="divContainer">
<div class="form-group">
<label for="ddlControls">Report Category :</label>
<select class="form-control" id="ddlControls">
<option value="-1">--Select--</option>
<option id="Users" value="Users">All Users</option>
<option id="Orders" value="Orders">All Orders</option>
<option id="Contractors" value="Contractors">All Contractors</option>
<option id="Permanets" value="Permanets">All Permanets</option>
<option id="Reports" value="Reports">All Reports</option>
</select>
</div>
<div class="form-group">
<label for="txt1">Report Number</label>
<input type="text" class="form-control" id="txt1">
</div>
<div class="form-group">
<label for="txt2">Order Number:</label>
<input type="text" class="form-control" id="txt2">
</div>
<!--Here are all my hidded div that i want to show based on the selection of report catergory-->
<div class="hidden" id="divUsers">
<h2>I want to show this div for Users</h2>
<!--I will have more controls here-->
</div>
<div class="hidden" id="divOrders">
<h2>I want to show this for Orders</h2>
<!--I will have more controls here-->
</div>
<div class="hidden" id="divContractors">
<h2>I want to show this div for Contractors</h2>
<!--I will have more controls here-->
</div>
<div class="hidden" id="divPermanet">
<h2>I want to show this div for Permanet</h2>
<!--I will have more controls here-->
</div>
<div class="hidden" id="divReport">
<h2>I want to show this div for Report</h2>
<!--I will have more controls here-->
</div>
</div>
</div>
</form>
</fieldset>
</div>
发布于 2016-11-04 12:34:34
试试看这个例子,
$(document).ready(function () {
function hideAll(){
$("#divUsers, #divOrders, #divContractors, #divPermanet, #divReport").hide();
}
hideAll();
$('#ddlControls').on('change', function () {
hideAll();
if (this.value == 'Users') {
$("#divUsers").show();
alert("Users");
}
else if (this.value == 'Orders') {
$("#divOrders").show();
alert("orders here");
}
else if (this.value == 'Contractors') {
$("#divContractors").show();
alert("Contractors here");
}
else if (this.value == 'Permanets') {
$("#divPermanet").show();
alert("Permanets here");
}
else if (this.value == 'Reports') {
$("#divReport").show();
alert("Reports here");
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<fieldset class="fieldsetStyle">
<form role="form">
<div class="box-body">
<div class="col-md-5" id="divContainer">
<div class="form-group">
<label for="ddlControls">Report Category :</label>
<select class="form-control" id="ddlControls">
<option value="-1">--Select--</option>
<option id="Users" value="Users">All Users</option>
<option id="Orders" value="Orders">All Orders</option>
<option id="Contractors" value="Contractors">All Contractors</option>
<option id="Permanets" value="Permanets">All Permanets</option>
<option id="Reports" value="Reports">All Reports</option>
</select>
</div>
<div class="form-group">
<label for="txt1">Report Number</label>
<input type="text" class="form-control" id="txt1">
</div>
<div class="form-group">
<label for="txt2">Order Number:</label>
<input type="text" class="form-control" id="txt2">
</div>
<!--Here are all my hidded div that i want to show based on the selection of report catergory-->
<div id="divUsers">
<h2>I want to show this div for Users</h2>
<!--I will have more controls here-->
</div>
<div id="divOrders">
<h2>I want to show this for Orders</h2>
<!--I will have more controls here-->
</div>
<div id="divContractors">
<h2>I want to show this div for Contractors</h2>
<!--I will have more controls here-->
</div>
<div id="divPermanet">
<h2>I want to show this div for Permanet</h2>
<!--I will have more controls here-->
</div>
<div id="divReport">
<h2>I want to show this div for Report</h2>
<!--I will have more controls here-->
</div>
</div>
</div>
</form>
</fieldset>
</div>
发布于 2016-11-04 12:28:20
问题是,您需要隐藏所有其他div,而不仅仅是一个您正在做的。
您可以通过向每个显示div应用一个类来解决这个问题,将隐藏类添加到该类的任何元素中,然后使所选的div可见。
或者,您可以在事件侦听器中手动隐藏每种情况下的所有div,但这是不必要的后悔。
发布于 2016-11-04 12:32:23
您肯定应该在所有需要隐藏的div中添加一个类。这允许您同时隐藏所有这些信息,然后显示正在被选中的对象。您的一些div没有显示的原因是由于您的JS中的排字。这里是一个工作小提琴。
工作JavaScript:
$(function () {
$('#ddlControls').on('change', function () {
$('.select-div').hide();
if (this.value == 'Users') {
$("#divUsers").show();
alert("Users");
}
else if (this.value == 'Orders') {
$("#divOrders").show();
alert("orders here");
}
else if (this.value == 'Contractors') {
$("#divContractors").show();
alert("Contractors here");
}
else if (this.value == 'Permanets') {
$("#divPermanet").show();
alert("Permanets here");
}
else if (this.value == 'Reports') {
$("#divReport").show();
alert("Reports here");
}
});
});
https://stackoverflow.com/questions/40422513
复制相似问题