选择 2 AJAX 标签
Select2 AJAX Tags
我有以下 JSON,通过 /tags
检索:
[
{
"id": "CSS",
"text": "CSS"
},
{
"id": "HTML",
"text": "HTML"
},
{
"id": "JavaScript",
"text": "JavaScript"
},
{
"id": "jQuery",
"text": "jQuery"
},
{
"id": "MySQL",
"text": "MySQL"
},
{
"id": "PHP",
"text": "PHP"
}
]
我有一个 <input />
可以通过使用 Select2:
接受标签
<input name="Tags" id="Tags" value="PHP,HTML,jQuery" />
并且我以这种方式附加了 Select2:
$("#Tags").select2({
tags: true,
tokenSeparators: [",", " "],
createSearchChoice: function(term, data) {
if ($(data).filter(function() {
return this.text.localeCompare(term) === 0;
}).length === 0) {
return {
id: term,
text: term
};
}
},
multiple: true,
ajax: {
url: '/tags',
dataType: "json",
data: function(term, page) {
return {
q: term
};
},
results: function(data, page) {
return {
results: data
};
}
}
});
问题
- 当我加载页面时,默认值消失了。
- Select2 向
/tags
发出请求,但它不会加载标签。
控制台也没有错误。我正在使用来自 CDN 的 Select2 3.5.2。我哪里错了?
嗯,我用过这个。看起来像是破解或解决方法。
$("#Tags").select2({
tags: true,
multiple: true
});
$.getJSON("/tags", function (data) {
if (data.length > 0)
$("#Tags").select2({
tags: data,
multiple: true
});
});
希望这对某人有所帮助。在我得到更好的建议之前,我会一直保持这个状态。
我有以下 JSON,通过 /tags
检索:
[
{
"id": "CSS",
"text": "CSS"
},
{
"id": "HTML",
"text": "HTML"
},
{
"id": "JavaScript",
"text": "JavaScript"
},
{
"id": "jQuery",
"text": "jQuery"
},
{
"id": "MySQL",
"text": "MySQL"
},
{
"id": "PHP",
"text": "PHP"
}
]
我有一个 <input />
可以通过使用 Select2:
<input name="Tags" id="Tags" value="PHP,HTML,jQuery" />
并且我以这种方式附加了 Select2:
$("#Tags").select2({
tags: true,
tokenSeparators: [",", " "],
createSearchChoice: function(term, data) {
if ($(data).filter(function() {
return this.text.localeCompare(term) === 0;
}).length === 0) {
return {
id: term,
text: term
};
}
},
multiple: true,
ajax: {
url: '/tags',
dataType: "json",
data: function(term, page) {
return {
q: term
};
},
results: function(data, page) {
return {
results: data
};
}
}
});
问题
- 当我加载页面时,默认值消失了。
- Select2 向
/tags
发出请求,但它不会加载标签。
控制台也没有错误。我正在使用来自 CDN 的 Select2 3.5.2。我哪里错了?
嗯,我用过这个。看起来像是破解或解决方法。
$("#Tags").select2({
tags: true,
multiple: true
});
$.getJSON("/tags", function (data) {
if (data.length > 0)
$("#Tags").select2({
tags: data,
multiple: true
});
});
希望这对某人有所帮助。在我得到更好的建议之前,我会一直保持这个状态。