使用jQuery在更改事件上创建新的下拉列表
Create new drop downs on change event using jQuery
我有一些随机值的下拉菜单。当我选择的值onchange事件触发器,我想在它下面添加新的下拉,但新的一个应该有所有的值,除了选择一个在第一个下拉。现在,当我改变第二个值,我需要第三个只有非选择的值从前两个下拉等等,直到没有更多的选项选择。
我现在所拥有的是添加新下拉菜单的机制,但它不能正常工作。例如,如果我选择第一个值,它会做的工作,新的下拉显示,它有所有的选项,除了选定的一个。但是如果我回去试着改变第一个下拉列表的选项就会创建第三个下拉列表。这是不应该的,如果下拉菜单已经创建了另一个下拉菜单,它不应该再做一次。是否有可能避免为已经触发的下拉菜单触发新的onchange事件?或者其他类型的活动更适合这个案例?
这是我的函数,完成描述的工作:
createNewDropDonws : function() {
var selectWrapper = $('#select-boxes');
$(document).on('change', '.dynamic-select', function() {
var element = $(this);
var optionsLength = (element.find('option').length) - 1;
if(optionsLength === 1) {
return true;
}
var newSelect = $(this).clone();
newSelect.find("option[value='" + element.val() + "']").remove();
newSelect.appendTo(selectWrapper)
});
}
这是我的下拉菜单的HTML:
<div id="select-boxes">
<select class="dynamic-select" id="ddlTest">
<option value=""></option>
<option value="Belbin">Belbin</option>
<option value="Raven">Raven</option>
<option value="PPA">PPA</option>
<option value="PPA+">PPA+</option>
<option value="Basic Knowledge">Basic Knowledge</option>
<option value="PCT">PCT</option>
</select>
</div>
这是一个简单的CSS类:
.dynamic-select{
display: block;
margin: 10px;
}
有人知道如何使用jQuery正确实现这一点吗?
我们可以这样做:
我们只是添加了一些类,比如executed
,一旦它添加了另一个下拉菜单。在事件处理器中,我们检查当前dropwon是否有那个类。如果它已经在那里,那么就意味着我们已经完成了下拉菜单,如下所示:
$(document).ready(function() {
var selectWrapper = $('#select-boxes');
$(document).on('change', '.dynamic-select', function() {
var element = $(this);
if(element.hasClass("executed"))
return;
var optionsLength = (element.find('option').length) - 1;
if (optionsLength === 1) {
return true;
}
var newSelect = $(this).clone();
newSelect.find("option[value='" + element.val() + "']").remove();
newSelect.appendTo(selectWrapper)
$(this).addClass("executed");
});
});
.dynamic-select {
display: block;
margin: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="select-boxes">
<select class="dynamic-select" id="ddlTest">
<option value=""></option>
<option value="Belbin">Belbin</option>
<option value="Raven">Raven</option>
<option value="PPA">PPA</option>
<option value="PPA+">PPA+</option>
<option value="Basic Knowledge">Basic Knowledge</option>
<option value="PCT">PCT</option>
</select>
</div>
相关文章:
- 从多维嵌套json数组创建下拉列表
- 创建自定义函数以在函数上运行完整的多选下拉列表
- 如何在php中创建依赖的下拉列表
- 基于所选下拉列表值创建动态复选框
- 如何创建谷歌地图下拉列表
- 如何使用json数据创建下拉列表
- 如何从下拉列表中的值在量角器中创建 json 字符串
- 使用 JavaScript 创建动态下拉列表
- 即时创建下拉列表
- 我用jQuery创建下拉列表的方法正确吗
- 如何从2d数组中创建下拉列表,并在输入中显示值
- 创建下拉列表
- 从API查询中创建下拉列表
- 通过json数据循环创建下拉列表
- 如何创建下拉列表与内部搜索
- 如何创建下拉列表以选择月份和年份
- 如何为输入框创建下拉列表取决于在另一个输入框的另一个下拉列表中选择的值
- 下拉菜单 - Javascript:关于使用 javascript 创建下拉列表的问题
- 如何在新表单中创建下拉列表列/字段.使用SharePoint中的另一个列表中的项
- 在运行时创建下拉列表,然后绑定下拉列表的值——不工作ngOptions