选择2 和初始化选择回调



在页面加载时,我尝试使用 initSelect 选择 ID 60(输入字段的指定值)。我似乎无法让它正常工作。

PHP 脚本运行良好并返回正确的值,但是如何让 JS 正确执行回调?

JavaScript:

$(document).ready(function() {
    $('#editAlbumArtistId').select2({
            placeholder: 'Search names',
            ajax: {
                url: "/jQueryScripts/jQuerySelectListArtists.php",
                dataType: 'json',
                quietMillis: 100,
                data: function (term, page) {
                    return {
                        term: term, //search term
                        page_limit: 10 // page size
                    };
                },
                results: function (data, page) {
                    return {results: data.results};
                }
            },
            initSelection: function(element, callback) {
            var id = $(element).val();
            if(id !== "") {
                $.ajax("/jQueryScripts/jQuerySelectListArtists.php", {
                    data: {id: id},
                    dataType: "json"
                }).done(function(data) {
                    callback(data);
                });
            }
        }
    });
});

.HTML:

<p>
    <input type='hidden' value="60" data-init-text='Search names' name='editAlbumArtistId' id='editAlbumArtistId' style="width:180px;"/>
</p>

每次刷新页面时,我都会看到 PHP 脚本被执行,并且它返回正确的 ID 和文本。但是,该字段没有更新,我已经认真尝试了我能想到的一切。

我正在使用 Select2 3.4.3。

任何帮助将不胜感激。

终于解决了!我想select2不想要数组,因为它是单个值,所以我选择了 data.results 数组的第一个元素。

callback(data.results[0]);

如果你设置了 multiple:true,只需接受整个结果数组;

callback(data.results);

您也可以将其用于较少的代码:

    initSelection: function(element, callback) {
        return $.getJSON("/jQueryScripts/jQuerySelectListArtists.php?id=" + element.val(), null, function(data) {
            return callback(data[0]);
        });
    }

我在 Select2 wiki 中看到过这个例子,但我不得不像你一样处理回调(数据)与回调(数据[0])。

最新更新