我有一个模态,它具有两个“行为”,一个用于创建新记录,另一个用于编辑现有记录,具体取决于单击哪个按钮(新建/编辑)。
单击“编辑”时,记录数据(“用户”表)与子记录(“权限”表)一起“加载”。
在模式加载过程中,select2被初始化:
let $select2user = $(".select2user");
$select2user.select2({
ajax: {
url: 'getUsersWithPermissions.php',
type: "GET",
dataType: 'json',
data: function (params) {
return {
search: params.term,
page: params.page || 1
};
},
processResults: function (data) {
data.page = data.page || 1;
return {
results: data.items.map(function (item) {
return {
id: item.id,
text: item.name
};
})
}
},
cache: true,
delay: 250
},
multiple: true
});
一切正常,除非单击“编辑记录”。
使用注册表数据正确填写了输入表单(模态),但是,我无法从子记录(权限表)中预先选择多个选项。
我尝试使用'append',但最终会产生重复的选项。
$.each( value, function( permissions, permission ) {
console.log(permission['name']); // ok
let newOption = new Option(permission['name'], permission['id'], false, true);
$select2user.append(newOption);
});
$select2user.trigger('change');
答案 0 :(得分:1)
$(document).ready(function() {
$("#selectlist").select2();
var _selectedValues = [];
_selectedValues.push('1');
_selectedValues.push('5');
_selectedValues.push('8');
$("#selectlist").select2().val(_selectedValues).trigger("change");
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.min.js"></script>
<select id="selectlist" class="form-control" name="selectList[]" multiple="multiple" style="width:200px">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
<option value="6">Six</option>
<option value="7">Seven</option>
<option value="8">Eight</option>
<option value="9">Nine</option>
<option value="10">Ten</option>
</select>
您可以尝试这样设置select2中的值。
var _selectedValues = [];
_selectedValues.push('1');
_selectedValues.push('2');
_selectedValues.push('3');
$("#selectlist").select2().val(_selectedValues).trigger("change");