【发布时间】:2013-09-13 00:36:17
【问题描述】:
我使用 Ajax 设置了 select2 控件(有单个和多个)。我试图在页面加载时设置一些值,但是我无法让它工作。我的 select2 代码如下:
function AjaxCombo(element, url, multival ){ // multival = true or false
multival = multival || false;
$(element).select2({
minimumInputLength: 2,
multiple: multival,
separator: '|',
ajax: {
url: url,
dataType: 'json',
data: function (term, page) {
var targetname = $(this).attr('name');
var target = targetname.slice(targetname.indexOf("[")+1, targetname.indexOf("]"));
return {
targettype: "search",
target: target,
search: term
};
},
results: function (data, page) {
return { results: data };
}
}
});
}
AjaxCombo(".ajaxselect", "includes/linkedcontrol.php", false);
AjaxCombo(".ajaxmultiselect", "includes/linkedcontrol.php", true);
Ajax 组合工作正常,仅在加载初始值时遇到问题。我在下面尝试了这段代码,但无法让它工作:
initSelection : function (element, callback) {
var elementText = $(element).attr('data-initvalue');
callback(elementText);
}
我的 php 中的 HTML 返回如下:
<input name='header[country]' class='ajaxselect' data-initvalue='[{"id":"IN","name":"India"}]' data-placeholder='Select Country' value='' />
我看到值是从 php 填充的,只有我的 jquery 有问题。我在控件中的值显示为US | United States of America。我想我已经编辑了 select2 源,以便在不使用格式选项的情况下将这种格式作为默认格式。
谁能帮我填充默认值?提前致谢。
编辑:这个问题与 Select2 版本
【问题讨论】:
-
看
initSelection选项 -
我曾尝试过但没有成功(请查看我的描述)。你觉得我做的有什么问题吗?你能帮我弄清楚吗?
-
试试
callback(JSON.parse(elementText)); -
尝试将
data-initvalue替换为value并在initSelection中使用callback(JSON.parse(elementText));。 -
@user1983983 非常感谢。你的建议成功了。我替换了
var elementText = JSON.parse($(element).val());,而不是更改回调。您没有将您的建议作为答案,因此我无法将您的答案标记为已接受,但我已投赞成票。
标签: jquery ajax jquery-select2