6

以下函数从 URL 获取 json 数据并使用 jQuery 填充选择元素。我不是使用Select2来转换具有自动完成功能的字段中的下拉菜单。

除了显示选择元素后我立即得到的写作“未定义”之外,一切都很好。自动完成和下拉功能完美。即使添加了一个空的“选项”元素,我也尝试使用数据占位符,但没有成功。

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' 是选择元素周围的 div 包装器。

4

5 回答 5

13

这现在在 4.0 中工作。发送到结果格式化程序的消息可以在对象中配置(参见他们的 GitHub 示例repo.texttemplateResult),也可以在从属性调用的函数中硬编码。例如:

templateResult: formatResult,

//...

function formatResult (result) {

if (result.loading) return "Searching...";

配置并不是最容易找到的,因为"Searching..."在他们的 GitHub 示例中查找字符串的命中率为零,但回想起来非常直观。

于 2015-06-16T09:30:05.153 回答
10

我最近遇到了这个。value当设置默认选项而没有相应选项或何时为空字符串时,似乎较新版本的 Select2 会出现问题value,例如:

<option value="" selected="selected">Select something</option>

明确定义一个非空值,例如value="0"或设置placeholderOption: 'first'为强制 Select2 使用第一个选项作为默认值:

$('#select2-field').select2({
    placeholderOption: 'first'
});
于 2013-08-10T14:16:36.703 回答
2

此问题已在 select2 的最新 (3.4.2) 版本中得到解决。升级,你应该很高兴!

于 2013-08-30T17:08:11.460 回答
2

我调查了这个错误,发现调用formatSelection可以让它的数据参数是一个数组或一个数据对象。

要解决此问题,请编辑formatSelectionselect2.js 文件中的函数,如下所示:

formatSelection: function (data, container, escapeMarkup) {
        var dataElement = data ? (data[0] || data) : null;
        return dataElement ? escapeMarkup(dataElement.text) : undefined;            
}

这应该可以解决这个讨厌的错误,让你回到正确的轨道上

于 2015-05-27T18:21:35.260 回答
-1

在您的脚本中添加以下行,这应该可以工作。

<script>
    $(document).ready(function() { $("select").select2(); });
</script>
于 2013-07-24T10:21:20.210 回答