我有select2
ComboBox数据由Ajax加载。我试图通过从输入值(在服务器端设置)中读取select2
并将其设置为id
来设置默认值为select2
。
我认为我应该以解决此问题的方式实现initSelection()
功能。
这是我的代码:
HTML输入是:
<input type="hidden" class="mySelect2" value="01" name="someName" />
The value "01" is set at the server
JavaScript是:
$(".mySelect2").select2({
ajax: {
url:"data.php",
dataType:"json",
data:function(term, page) {
return {
query:term, page: page -1
} ;
},
results:function(data, page) {
return data
}
}
});
我尝试了这个,但它没有用。
$(".mySelect2").select2('val', '01');
发生错误:“如果未定义initSelection()
,则无法调用val()”
答案 0 :(得分:0)
尝试这样的事情
$(function(){
$(".mySelect2").select2({
ajax: {
url:"data.php",
dataType:"json",
data:function(term, page) {
return {
query:term, page: page -1
} ;
},
results:function(data, page) {
return data
},
}
});
$(".mySelect2").select2('data', {id:'01',text:'01'});
})
HTML CODE
<input type="hidden" class="mySelect2" style="width:100px;" value="[{id:'01',text:'01'}]" name="someName" />
答案 1 :(得分:0)
使用ajax初始化select2控件中的默认值的一般前提可以通过以下方式解决:
initSelection: function (element, callback) {
var id = $(element).val();
if (id !== "") {
$.ajax("data.php", {
data: {
id: id // return a single item from your service
},
dataType: "json"
}).done(function (data) {
var results = [];
$.each(data, function (index, item) {
results.push({
id: item.Id, // whatever your id field is
text: item.TextValue // whatever your text field is
});
});
callback(results[0]);
});
}
}
我不是PHP人员,但这应该是ajax请求的标准。该方法基本上假设您可以返回单个结果以及列表。