动态& lt; select>下拉列表
Dynamic <select> dropdown using Javascript
我有一个有三个下拉框的HTML页面。根据第一个下拉菜单,将显示第二个下拉菜单中的选项。我使用下面的代码实现了它,我在网上找到了它的工作如预期。
有人能帮我过滤第三个下拉框基于第一和第二。由于该列表非常庞大,多达300多个选项,因此尝试找到一个简单的JSP来完成此操作。
$(function() {
$('#catagory').on('change', function() {
var val = $(this).val();
var sub = $('#family');
$('option', sub).filter(function() {
if (
$(this).attr('data-group') === val || $(this).attr('data-group') === 'SHOW'
) {
$(this).show();
} else {
$(this).hide();
}
});
});
$('#catagory').trigger('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<tr>
<th class="nwaLeft">
<label>Select Catagory:</label>
</th>
<td class="nwaBody">
<span style="height:0;">
<select name="catagory" id="catagory" style="width: 240px;">
<option selected disabled>Select Device Catagory</option>
<option value="Access Points">Access Points</option>
<option value="Audio/Video Devices">Audio/Video Devices</option>
<option value="Automobile">Automobile</option>
<option value="Barcode Scanner">Barcode Scanner</option>
<option value="Biometric Devices">Biometric Devices</option>
!!!Truncated output!!!
</select>
</span>
</td>
</tr>
<tr>
<th class="nwaLeft">
<label>Select Family:</label>
</th>
<td class="nwaBody">
<span style="height:0;">
<select name="family" id="family">
<option data-group='SHOW' value='0'>-- Select --</option>
<option data-group="Access Points" value="AeroHive">AeroHive</option>
<option data-group="Access Points" value="Aruba">Aruba</option>
<option data-group="Audio/Video Devices" value="Barco">Barco</option>
<option data-group="Audio/Video Devices" value="Behringer">Behringer</option>
<option data-group="Automobile" value="Tesla">Tesla</option>
<option data-group="Barcode Scanner" value="Intermec">Intermec</option>
<option data-group="Barcode Scanner" value="Symbol">Symbol</option>
<option data-group="Biometric Devices" value="Suprema">Suprema</option>
!!!Truncated output!!!
</select>
</span>
</td>
</tr>
第三个下拉框应该基于第一个和第二个选择进行过滤。
请帮助我与您的建议以及示例代码。
列出的示例具有不同的ID来筛选选项。由于我需要第三个下拉选项在相同的ID,提供的示例可能没有帮助。
筛选第三个列表与筛选第二个列表没有任何不同。事实上,如果您以结构化的方式应用属性,则可以在一个事件处理程序中完成所有工作。
下面是一个正在运行的例子:
$("[data-child]").change(function() {
//store reference to current select
var me = $(this);
//get selected group
var group = me.find(":selected").val();
//get the child select by it's ID
var child = $("#" + me.attr("data-child"));
//hide all child options except the ones for the current group, and get first item
var newValue = child.find('option').hide().not('[data-group!="' + group + '"]').show().eq(0).val();
child.trigger("change");
//set default value
child.val(newValue);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="catagory" data-child="family">
<option selected disabled>Select Device Catagory</option>
<option value="Access Points">Access Points</option>
<option value="Audio/Video Devices">Audio/Video Devices</option>
<option value="Automobile">Automobile</option>
<option value="Barcode Scanner">Barcode Scanner</option>
<option value="Biometric Devices">Biometric Devices</option>
</select>
<select id="family" data-child="item">
<option data-group='SHOW' value='0'>-- Select --</option>
<option data-group="Access Points" value="AeroHive">AeroHive</option>
<option data-group="Access Points" value="Aruba">Aruba</option>
<option data-group="Audio/Video Devices" value="Barco">Barco</option>
<option data-group="Audio/Video Devices" value="Behringer">Behringer</option>
<option data-group="Automobile" value="Tesla">Tesla</option>
<option data-group="Barcode Scanner" value="Intermec">Intermec</option>
<option data-group="Barcode Scanner" value="Symbol">Symbol</option>
<option data-group="Biometric Devices" value="Suprema">Suprema</option>
</select>
<select id="item">
<option data-group='SHOW' value='0'>-- Select --</option>
<option data-group="AeroHive" value="AeroHive1">AeroHive 1</option>
<option data-group="AeroHive" value="AeroHive2">AeroHive 2</option>
<option data-group="AeroHive" value="AeroHive3">AeroHive 3</option>
<option data-group="Aruba" value="Aruba">Aruba</option>
<option data-group="Barco" value="Barco1">Barco 1</option>
<option data-group="Barco" value="Barco2">Barco 2</option>
<option data-group="Behringer" value="Behringer1">Behringer 1</option>
<option data-group="Behringer" value="Behringer2">Behringer 2</option>
<option data-group="Behringer" value="Behringer3">Behringer 3</option>
<option data-group="Behringer" value="Behringer4">Behringer 4</option>
<option data-group="Tesla" value="Tesla">Tesla</option>
<option data-group="Intermec" value="Intermec">Intermec</option>
<option data-group="Symbol" value="Symbol">Symbol</option>
<option data-group="Suprema" value="Suprema">Suprema</option>
</select>
相关文章:
- 如何在x-editable angularjs的select下拉列表中获得所选值
- 在JavaScript中捕获select(下拉列表)上的键输入
- select下拉列表和promise-短暂的空选择
- 如何获得Materialize select下拉列表以使用React
- 使用split()从select下拉列表中填充文本字段值
- AngularJS ui-select - 不选择下拉列表中的选项
- jQuery - select 下拉列表 - focusout 在 select 之前触发
- 使用 Javascript/jQuery 以编程方式关闭 SELECT 下拉列表
- 使用 Jquery 将 SelectListItems 的 JSON 列表映射到下拉列表 Select List 并指示
- 没有响应.chzn-select两个带有ajax和codeigniter的下拉列表
- 如何使用ajax在select下拉列表中填充json数据
- 可编辑下拉列表(g:select)grails
- 使用php的动态变量从sql select和update语句的下拉列表中获取
- 使用Angular.js和PHP在select下拉列表中获取问题
- 要添加的搜索功能&从select下拉列表中删除选项
- 如何在javascript中只使用类名更改select下拉列表中的值
- 使用bootstrap-select.js根据第一个下拉列表更改第二个下拉列表的选项
- 当选项包含空格时,在select下拉列表中动态追加值会在下拉列表中追加空字段
- 如何在使用jquery点击select时刷新下拉列表
- 在html表的foreach绑定中,是否有可能将数据绑定到一个带有knockout的select下拉列表?