javascript - 具有相同类的多个下拉列表+依赖选择的插件
问题描述
所以我需要创建一个用户可以添加或删除下拉列表(任务类型)+依赖选择的下拉列表(任务名称)的表单。
现在的问题是,当用户添加更多行时。然后用户选择类型,所有的任务名称将跟随。这是由于使用了相同的类名。那么我应该怎么做才能确保当用户更改类型时,只有依赖选择的下拉菜单会受到影响? . 代码如片段所示。谢谢
var task_list = [{
"id": 1,
"name": "Duckbill Leak Tester",
"type": "tester",
},
{
"id": 2,
"name": "Main PCBA Pairing",
"type": "upair",
},
{
"id": 3,
"name": "Battery Kitting",
"type": "kit",
},
{
"id": 4,
"name": "PRUPMU Leak Tester",
"type": "tester",
},
{
"code": "flask",
"name": "Flask Leak Tester",
"type": "tester",
},
{
"id": 6,
"name": "Functional Tester",
"type": "tester",
},
{
"id": 7,
"name": "Calibration Test",
"type": "tester",
},
{
"id": 8,
"name": "Duckbill Kitting",
"type": "kit",
},
{
"id": 9,
"name": "Serial No",
"type": "sn",
},
{
"id": 10,
"name": "Master Carton",
"type": "pack",
},
{
"id": 11,
"name": "Pallet",
"type": "pallet",
},
{
"id": 12,
"name": "Straw Kitting",
"type": "kit",
},
{
"id": 13,
"name": "Flask Kitting",
"type": "kit",
},
{
"id": 14,
"name": "Puncture Tip Kitting",
"type": "kit",
},
{
"id": 15,
"name": "Antenna Kitting",
"type": "kit",
},
{
"id": 16,
"name": "Load Cell Long Kitting",
"type": "kit",
},
{
"id": 17,
"name": "Load Cell Short Kitting",
"type": "kit",
},
{
"id": 18,
"name": "PRUPMU Pairing",
"type": "join",
},
{
"id": 19,
"name": "Workorder",
"type": "wo",
},
{
"id": 20,
"name": "Dummy Tester",
"type": "tester",
}
]
$(document).ready(function() {
$(".s-task").chosen({
width: "100%"
});
$("body").on("change", ".s-type", function() {
var chosen_type = $("option:selected", this).val();
taskListDropDown(chosen_type);
});
$("#add-row").click(() => {
addNewRow();
});
})
function addNewRow() {
var html = `<div class="form-group col-md-4 type-row">
<select class="form-control s-type" name="task-type">
<option >Please choose one of the task type</option>
<option value="tester">Tester</option>
<option value="kit">Kitting</option>
<option value="upair">Unit Pairing</option>
<option value="repair">Repair</option>
<option value="sn">Serial Number</option>
<option value="join">Join</option>
<option value="pack">Packaging</option>
<option value="pallet">Palletizing</option>
</select>
</div>
<div class="form-group col-md-7 task-row">
<select
class="chosen-container-multi chosen-choices s-task task"
name="task-name"
multiple
></select>
</div>
<div class="form-group col-md text-center action-row">
<button type="button" class="form-control btn btn-info ">
<i class="fas fa-plus"></i>
</button>
</div>`;
$(".add-row").append(html);
$(".s-task").chosen({
width: "100%"
});
}
function taskListDropDown(type) {
$(".task").empty();
$.each(task_list, (key, val) => {
if (val.type == type) {
$(".task").append(
$("<option>", {
value: val.id,
text: val.name,
})
);
}
});
$(".task").trigger("chosen:updated");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.7/chosen.jquery.min.js"></script>
<div class="add-row form-row col-12">
<div class="form-group col-md-4 type-row">
<label>Task type</label>
<select class="form-control s-type" name="task-type">
<option>Please choose one of the task type</option>
<option value="tester">Tester</option>
<option value="kit">Kitting</option>
<option value="upair">Unit Pairing</option>
<option value="repair">Repair</option>
<option value="sn">Serial Number</option>
<option value="join">Join</option>
<option value="pack">Packaging</option>
<option value="pallet">Palletizing</option>
</select>
</div>
<div class="form-group col-md-7 task-row">
<label>Task Name</label>
<select class="chosen-container-multi chosen-choices s-task task" name="task-name" multiple></select>
</div>
<div class="form-group col-md text-center action-row">
<label> Action</label>
<button type="button" class="form-control btn btn-info" id="add-row">Add
<i class="fas fa-plus"></i>
</button>
</div>
</div>
解决方案
推荐阅读
- python - 与熊猫数据框中列表的日期差异
- python - 在 pd.apply() 和 np.vectorize() 中传递函数但不使用更简单的方法时遇到问题?
- ios - 无法将颜色更改为 tabBar?
- macos - 如何更改 Metal 中的 pixelFormat?
- java - 打印循环信息
- azure-information-protection - 使用标签保护文档
- django - Django 限制外键选项
- python - 为什么我们要在 numpy 的 lstsq 函数中打一个?
- java - 我可以将 ViewPager 的滑动方向从 LTR 更改为 RTL 吗?
- angular - 根据屏幕大小移动 ng-content