【问题标题】:In Select2, how do formatSelection and formatResult work?在 Select2 中,formatSelection 和 formatResult 是如何工作的?
【发布时间】:2014-05-13 23:46:52
【问题描述】:

我正在使用 Select2 (http://ivaynberg.github.io/select2/) 让表单的输入字段(假设它的 id 是 topics)处于标记模式,并带有现有标记的列表(允许用户选择一些这些标签中的一个,或创建新标签)由远程数据数组提供。

数组 (list.json) 是从我的服务器正确获取的。它有 idtext 字段,因为 Select2 似乎需要这些字段。因此它看起来像这样:

[ { id: 'tag1', text: 'tag1' }, { id: 'tag2', text: 'tag2' }, { id: 'tag3', text: 'tag3' } ]

HTML 文件中的脚本如下所示:

$("#topics").select2({
    ajax: { 
        url: "/mypath/list.json",
        dataType: 'json',
        results: function (data, page) { 
        return {results: data};
        },   
    }
});

但输入字段显示“正在搜索”,这意味着它无法使用数组进行标记支持。

在带有 Select2 的脚本中,我知道我必须定义 formatSelectionformatInput,但我不知道它们在我的情况下应该如何工作,尽管我已经阅读了 Select2 文档...谢谢你的帮助!

【问题讨论】:

    标签: javascript html arrays jquery-select2


    【解决方案1】:

    您需要添加here 解释的功能。在您的示例中:

    function format(state) {
    
        return state.text;
    }
    

    【讨论】:

    • 谢谢。我试过这个:function format(item) { return item.text; } $("#topics").select2({ ajax: { url: "/mypath/list.json", dataType: 'json', results: function (data, page) { return {results: data}; } }, formatResult: format, formatSelection: format, escapeMarkup: function (m) { return m; } }); 但还是不行。
    • 什么都没有是什么意思?不明确的?我根本没有打电话?
    • 可以在Ajax之后记录数据吗?
    • 我可以在服务器端记录data,但在客户端什么都不能记录。但我发现了问题(客户端控制台中的消息):我的服务器是不允许跨域资源共享 (CORS),并且由于我是从单独的 HTML 文件进行测试,所以它无法工作。我修好了。它现在正在工作。非常感谢您的帮助和耐心等待!
    • 在 Select2 4.* 中,“格式化程序”已重命名为 templateSelectiontemplateResult,并且它们的签名也已更改。请参考select2.github.io/announcements-4.0.html
    猜你喜欢
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 2017-10-05
    • 2013-04-17
    相关资源
    最近更新 更多