我目前正在使用预定义的JavaScript Select2.js。
现在我的问题是我有一些要从列表中删除的值,这些值又是动态值,就像我在编辑页面时所说的那样,我需要在页面加载期间再次从后端获取已保存的值在我搜索数据时不显示。
对于上面我需要一种方法来访问在页面加载时创建的select2对象,并设置在某些属性中添加这些值,但是从不同的js文件中添加。
任何人都可以帮我一样吗?我希望无论我有什么意义......
提前致谢。
示例代码 -
var val = this.getVal(),
choices = this.results.find(".select2-result"),
compound = this.results.find(".select2-result-with-children"),
self = this;
choices.each2(function (i, choice) {
var id = self.id(choice.data("select2-data"));
if (indexOf(id, val) >= 0) {
choice.addClass("select2-selected");
// mark all children of the selected parent as selected
choice.find(".select2-result-selectable").addClass("select2-selected");
}
});
compound.each2(function(i, choice) {
// hide an optgroup if it doesnt have any selectable children
if (!choice.is('.select2-result-selectable')
&& choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) {
choice.addClass("select2-selected");
}
});
以上是select2.js ..
的摘录这里指的是使用以下代码创建的select2对象:
$(".select2Search").select2({
closeOnSelect: false,
width: '450px',
minimumInputLength: 3,
ajax: {},
allowClear: true,
tags: true
});
当收到警报时,val返回已选择元素的逗号分隔ID,因此我需要确保this.getVal()具有预定义数据...
下面有一个名为setVal的函数 -
setVal: function (val) {
var unique;
if (this.select) {
this.select.val(val);
} else {
unique = [];
// filter out duplicates
$(val).each(function () {
if (indexOf(this, unique) < 0) unique.push(this);
});
this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator));
alert(this.opts.element.val());
}
}