以下函数从URL获取json数据并使用jQuery填充select元素。我使用Select2来转换具有自动完成功能的字段中的下拉列表。
除了显示选择元素后我写的'undefined'之外,一切都很好。自动完成和下拉工作完美。我试图使用数据占位符,即使添加一个空的'option'元素但没有成功。
function CitiesList(callback){
$.getJSON(document.URL+'getCities/sdfsfs', function(data){
var html = '';
var len = data.length;
var option = '<option></option>';
for (var i = 0; i< len; i++) {
html += '<option value="' + data[i] + '">' + data[i] + '</option>';
}
$('.select_cities select').append(option);
$('.select_cities select').append(html);
if(callback && typeof callback == 'function'){
callback.call(null);
}
});
}
<select data-placeholder="Select a city" name="cities" id="cities">
</select>
'select_cities'是select元素周围的div包装器。
答案 0 :(得分:13)
现在4.0版本正在使用。发送到结果格式化程序的消息可以在对象中配置(请参阅their GitHub example repo.text
),也可以在从templateResult
属性调用的函数中进行硬编码。 e.g:
templateResult: formatResult,
// ...
function formatResult (result) {
if (result.loading) return "Searching...";
配置并不是最容易找到的东西,因为在their GitHub example中查找字符串"Searching..."
没有命中,但回想起来非常直观。
答案 1 :(得分:10)
我最近碰到了这个。如果设置默认选项时没有相应的value
或value
为空字符串,则看起来新版本的Select2会出现问题,例如:
<option value="" selected="selected">Select something</option>
显式定义非空值,例如value="0"
或设置placeholderOption: 'first'
,以强制Select2将第一个选项用作默认值:
$('#select2-field').select2({
placeholderOption: 'first'
});
答案 2 :(得分:2)
此问题已在select2的最新版本(3.4.2)中得到解决。升级,你应该好好去!
答案 3 :(得分:0)
我已经调查了这个错误,发现对formatSelection
的调用可以使其数据参数为数组或数据对象。
要解决此问题,请编辑select2.js文件中的formatSelection: function (data, container, escapeMarkup) {
var dataElement = data ? (data[0] || data) : null;
return dataElement ? escapeMarkup(dataElement.text) : undefined;
}
函数,如下所示:
R> apply(tbl[,2:4], 1, function(x) x[rank(1/x) == 2])
#[1] 20000 15000 NA NA
这应该可以修复这个令人讨厌的错误并让你回到正确的轨道上
答案 4 :(得分:-1)
在脚本中添加以下行,这应该可行。
<script>
$(document).ready(function() { $("select").select2(); });
</script>