我有一个select2,只有在获得许可的情况下,我才需要创建标签。我需要使用用户ID通过ajax检查权限。
现在设置为tags: true
,我可以始终创建新标签。 (好)
如果设置为tags: false
,则无法创建新标签。 (好)
我尝试使用标签:function() { return false; }
,但似乎仍可以创建标签。 (不好)
我的目标是拥有这样的东西:
tags: function() {
$.ajax({
type: "POST",
async: false,
dataType:"json",
url: "ajax/check_permissione.php",
data: { 'user-id': 1 },
success: function(data, status) {
if ( data.PermissionOK == 1 ) {
return true;
}
return false;
}
});
}
但是我现在不知道标签是否可以接受函数的值?
我的脚本:
$("#test").select2({
tags: true, // <- if true create new tags, else only select available
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
},
templateResult: function (data) {
var $result = $("<span></span>");
$result.text(data.text);
if (data.newOption) {
$result.append(" <em>(new option)</em>");
}
return $result;
}
}).on('select2:select', function (e) {
//others operations
});
答案 0 :(得分:1)
只需将tags: true
更改为tags: permission
,其中permission
包含表明用户ID是否具有权限的值。如果通过ajax检查权限,则可以将结果存储到变量中。这是插图。
var permission = true;
$.ajax({
type: "POST",
async: false,
dataType:"json",
url: "ajax/check_permissione.php",
data: { 'user-id': 1 },
success: function(data, status) {
if ( data.PermissionOK == 1 ) {
permission = true;
} else {
permission = false;
}
}
});
如果您使用的是ajax,请先执行此代码,然后再使用select2
答案 1 :(得分:1)
供您参考。 如果您想避免使用'async:false'(使用jQuery Promise),则可以采用这种方式。
{
"0":{
"58f613052c7d6ab48bbb614b34e78c3e":{
"no1":{
"c":"1"
},
"no2":{
"c":"1"
}
},
"58f613052c7d6ab48bbb614b34e78caa":{
"no1":{
"c":"1"
},
"no3":{
"c":"1"
}
}
}
}