Javascript 选择控件-jQuery显示以前未选择的选项
如果你能帮我解决下一个问题,我将不胜感激。下面的视图显示了一个带有按钮的表,该按钮可向表中动态添加新行,并且每一行都使用“选择类型”控件预定义。 我用它的风格,可以看到选择 我的问题是,每次我向表中添加新行时,在打开select时,如何让我看到以前未选择的选项。我使用jQuery。 事先非常感谢 编辑1 我尝试的是:Javascript 选择控件-jQuery显示以前未选择的选项,javascript,jquery,html,Javascript,Jquery,Html,如果你能帮我解决下一个问题,我将不胜感激。下面的视图显示了一个带有按钮的表,该按钮可向表中动态添加新行,并且每一行都使用“选择类型”控件预定义。 我用它的风格,可以看到选择 我的问题是,每次我向表中添加新行时,在打开select时,如何让我看到以前未选择的选项。我使用jQuery。 事先非常感谢 编辑1 我尝试的是: $(document).on('select2:opening', 'select[name^="table2"]', function() { let
$(document).on('select2:opening', 'select[name^="table2"]', function() {
let input = $(this);
let initialOptions = [];
let selectedOptions = [];
$(input.find('option').each(function(id, option) {
initialOptions.push(option);
}));
$('select[name^="table2"] option:selected').each(function() {
selectedOptions.push($(this).val());
});
initialOptions.splice($.inArray(selectedOptions, initialOptions), 1 );
});
编辑2
伙计们,你们评论的东西都没用,真令人沮丧,到目前为止我只有2个对象数组:
$(document).on('select2:opening', 'select[name^="table2"]', function() {
let input = $(this);
let initialOptions = [];
let selectedOptions = [];
$(input.find('option').each(function() {
initialOptions.push($(this));
}));
$('select[name^="table2"] option:selected').each(function() {
selectedOptions.push($(this));
});
console.log(initialOptions);
console.log(selectedOptions);
});
控制台返回以下两个阵列:
Array(24) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
Array(3) [ {…}, {…}, {…} ]
扩大:
24) […]
0: Object [ option
]
1: Object [ option
]
2: Object [ option
]
3: Object [ option
]
4: Object [ option
]
5: Object [ option
]
6: Object [ option
]
7: Object [ option
]
8: Object [ option
]
9: Object [ option
]
10: Object [ option
]
11: Object [ option ]
第二个呢
(3) […]
0: Object [ option
]
1: Object [ option
]
2: Object [ option
]
length: 3
<prototype>: Array []
我需要从第一个数组中删除第二个数组中的所有对象,但满足值等于某个数字的条件的对象除外。您可以有一个选项数组,例如
var optionsArray = [option1, option2,..... and so on]
每次单击“添加新行”时,您都需要创建此数组的克隆,该克隆应使用循环与其他行中的选定选项(如果存在)进行比较,并且应使用jquery数组删除以前选择的值
clonedArray.splice( $.inArray(selectedVal, clonedArray), 1 );
然后,应使用此过滤数组填充下拉列表
编辑以从初始阵列中删除选定阵列
上面的代码将使用$.inArray函数查找每个选定阵列项的索引,并将该索引用作拼接函数的参数您可以通过在下面创建数据源来完成此操作代码只是一个想法如何实现它您可以根据自己的需要修改此功能 风险值数据=[ { id:0, 文字:“增强” }, { id:1, 文本:“bug” }, { id:2, 文本:“重复” }, { id:3, 文本:“无效” }, { id:4, 文本:“wontfix” } ]; var selectedValue=[]; var select=select; var计数器=1; $document.readyfunction{ $AddNew。单击,函数{ var数据源=[];
forvar i=0;iif表是从json创建的,然后只需将元素推送到数组并刷新。array.pushelement对象请选中编辑2为什么要推送数组中的父控件。只需推送选项文本。例如$this。text@MuhammadMuradHaider很抱歉,我没有意识到,我在上传codethis option对象时就是这样尝试的您的“edit2”应该为您提供文本和值属性。您需要在数组中推送文本并创建结果数组。您可以创建fiddle@NegiRox对不起,我不能..请看编辑2查看答案可能会有帮助
var initialArray = [1,2,3,4,5]
var selectedArray = [3,5]
var clonedArray = initialArray
for(var i=0; i<selectedArray.length;i++) {
clonedArray.splice($.inArray(selectedArray[i], clonedArray), 1)
}
//Cloned array is now filtered array