选择2未定义的问题

时间:2013-07-24 10:10:57

标签: jquery jquery-select2

以下函数从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包装器。

5 个答案:

答案 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)

我最近碰到了这个。如果设置默认选项时没有相应的valuevalue为空字符串,则看起来新版本的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>