启用或禁用下拉列表中的选项时,Select2 无法正常工作
Select2 not working correctly when options in the dropdown are being enabled or disabled
我正在使用 select2 作为下拉菜单,这样可以为项目添加新任务。选择任务时 - 添加 table 中的一行,并在下拉列表中禁用该选项,因为我们不想多次添加相同的任务。但是,如果我们想从 table 中删除一个任务 - 单击删除按钮时 - 它应该启用下拉列表中的选项。这是正在发生的事情:我在 table 中添加了 2 个任务,因此这些任务在下拉列表中被禁用。我先删除第一个,然后再删除第二个 - 两个选项都在下拉列表中启用。现在我这样做 - 我删除了第一个任务,然后我单击下拉菜单以查看选项 - 我从 table 中删除的任务已启用。当我删除最后一个任务并再次检查下拉列表时 - 最后一个任务仍然被禁用,即使它不再在 table 中。因此,在不单击下拉列表的情况下删除 table 中的任务时,select2 工作正常。这是启用选项并从 table:
中删除行的函数
function DeleteRow(sender) {
var taskId = $(sender).parent().parent().attr("task-id");
var option = $('#add-task-select').find('option[value="' + taskId + '"]');
option.prop('disabled', false);
//var taskId = option.attr('value');
$('#add-task-select').trigger('change');
$(sender).parent().parent().remove();
}
当下拉列表中的选项被 enabled 或 disabled 时再次尝试调用 select2 :
$('#add-task-select').select2();
或
$('.select2').select2();
.select2-results__option--highlighted {
background: red !important;
color: #fff !important;}
尝试这样使用:
$('#add-task-select').select2({
dropdownParent: $('#yourModalName')
});
我正在使用 select2 作为下拉菜单,这样可以为项目添加新任务。选择任务时 - 添加 table 中的一行,并在下拉列表中禁用该选项,因为我们不想多次添加相同的任务。但是,如果我们想从 table 中删除一个任务 - 单击删除按钮时 - 它应该启用下拉列表中的选项。这是正在发生的事情:我在 table 中添加了 2 个任务,因此这些任务在下拉列表中被禁用。我先删除第一个,然后再删除第二个 - 两个选项都在下拉列表中启用。现在我这样做 - 我删除了第一个任务,然后我单击下拉菜单以查看选项 - 我从 table 中删除的任务已启用。当我删除最后一个任务并再次检查下拉列表时 - 最后一个任务仍然被禁用,即使它不再在 table 中。因此,在不单击下拉列表的情况下删除 table 中的任务时,select2 工作正常。这是启用选项并从 table:
中删除行的函数 function DeleteRow(sender) {
var taskId = $(sender).parent().parent().attr("task-id");
var option = $('#add-task-select').find('option[value="' + taskId + '"]');
option.prop('disabled', false);
//var taskId = option.attr('value');
$('#add-task-select').trigger('change');
$(sender).parent().parent().remove();
}
当下拉列表中的选项被 enabled 或 disabled 时再次尝试调用 select2 :
$('#add-task-select').select2();
或
$('.select2').select2();
.select2-results__option--highlighted {
background: red !important;
color: #fff !important;}
尝试这样使用:
$('#add-task-select').select2({
dropdownParent: $('#yourModalName')
});