将值加载到Selectize.js中

亚历克斯·里特纳

问题

我有一个文本输入,我选择了它作为标签,可以很好地查询远程数据,我可以使用它搜索甚至创建新项目,并且一切正常。

使用selectize:

var $select = $('.authorsearch').selectize({
    valueField: 'AuthorId',
    labelField: 'AuthorName',
    searchField: ['AuthorName'],
    maxOptions: 10,
    create: function (input, callback) {
        $.ajax({
            url: '/Author/AjaxCreate',
            data: { 'AuthorName': input },
            type: 'POST',
            dataType: 'json',
            success: function (response) {
                return callback(response);
            }
        });
    },
    render: {
        option: function (item, escape) {
            return '<div>' + escape(item.AuthorName) + '</div>';
        }
    },
    load: function (query, callback) {
        if (!query.length) return callback();
        $.ajax({
            url: '/Author/SearchAuthorsByName/' + query,
            type: 'POST',
            dataType: 'json',
            data: {
                maxresults: 10
            },
            error: function () {
                callback();
            },
            success: function (res) {
                callback(res);
            }
        });
    }
});

文本框:

<input class="authorsearch" id="Authors" name="Authors" type="text" value="" />

例子:

作者工作

然后,当我选择一个(在本例中为“ apple”)时,它会如您所愿的那样出现在徽章中,并且文本框的基础值是这些项的值的逗号分隔列表。

带有徽章的作者

电流输出

问题是,当我加载页面并希望将从数据库中检索到的值作为标记显示在选定的文本输入中时,它只会加载这些值,而我看不到显示displayname的方法。

<input class="authorsearch" id="Authors" name="Authors" type="text" value="1,3,4" />

仅数字

希望的食物

我已经尝试了输入值字段的各种值,以使其加载项目以显示其显示名称而不是其值。下面是一个将单个对象作为JSON返回的示例,理想的情况是能够将这些对象的JSON数组作为选定的标签加载。

[{"AuthorId":1,"AuthorName":"Test Author"},
 {"AuthorId":3,"AuthorName":"Apple"},
 {"AuthorId":4,"AuthorName":"Test Author 2"}]

在此处输入图片说明

我该怎么办?我需要以特定方式形成文本框的值,还是需要使用一些JavaScript加载现有值?

亚历克斯·里特纳

我最终使用onInitialize回调加载了存储在data-*字段中的JSON值您可以在此jsfiddle中看到它的实际作用

<input class="authorsearch" id="Authors" name="Authors" type="text" value="" 
 data-selectize-value='[{"AuthorId":1,"AuthorName":"Test"},{"AuthorId":2,"AuthorName":"Test2"}]'/>

基本上,它解析data-selectize-value值,然后将选项添加到selectize中,然后添加项本身。

onInitialize: function() {
    var existingOptions = JSON.parse(this.$input.attr('data-selectize-value'));
    var self = this;
    if(Object.prototype.toString.call( existingOptions ) === "[object Array]") {
        existingOptions.forEach( function (existingOption) {
            self.addOption(existingOption);
            self.addItem(existingOption[self.settings.valueField]);
        });
    }
    else if (typeof existingOptions === 'object') {
        self.addOption(existingOptions);
        self.addItem(existingOptions[self.settings.valueField]);
    }
}

我的解决方案确实假定我的JSON对象正确形成,并且它是单个对象还是对象Array,因此它可能适合也可能不适合其他人的需要。

因此它解析:

[{"AuthorId":1,"AuthorName":"Test"},
 {"AuthorId":2,"AuthorName":"Test2"}]

到:

在此处输入图片说明

当然基于上面我原始帖子中的选择设置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将SharePrefs值加载到textview中

来自分类Dev

无法将js加载到MongoDB中

来自分类Dev

ZK:从Java将值加载到Selectbox中

来自分类Dev

Django将字典值加载到JSON中

来自分类Dev

如何从资源将值加载到数组列表中

来自分类Dev

ZK:从Java将值加载到Selectbox中

来自分类Dev

在调用之前将值加载到 vue.js 路由器防护中

来自分类Dev

页面加载后,如何将值加载到输入文本字段中?

来自分类Dev

将文件中的值加载到2D数组指针的值中

来自分类Dev

KnockoutJS-将值加载到下拉列表中。选择值始终为空

来自分类Dev

将本地文件(CSS或JS)加载到所选的网站中

来自分类Dev

使用Node.js将数据加载到Redshift中

来自分类Dev

将JSON文件加载到JS对象中

来自分类Dev

将JSON文件加载到JS对象中

来自分类Dev

无法将js函数加载到html中

来自分类Dev

Selectize.js将回调传递加载到自定义函数

来自分类Dev

将32位值加载到手臂组件中的寄存器中

来自分类Dev

将文件中的值加载到列表中以及如何将它们分离

来自分类Dev

如何将字典数组中的值加载到TableView单元格中

来自分类Dev

将外部文件中的值加载到pom.xml中

来自分类Dev

如何从访问日期/时间值将时间加载到Java中?

来自分类Dev

如何将CSV文件加载到SPSS变量和值标签中

来自分类Dev

Play + Anorm + Postgres-将json值加载到case类中

来自分类Dev

AngularJS + UI Bootstrap Typeahead:将值从对象预加载到输入字段中

来自分类Dev

使用ServletContextListener将属性文件值加载到web.xml中

来自分类Dev

将范围值加载到数组在angularjs中不起作用

来自分类Dev

如何将动态值从数据库加载到jQuery图表中

来自分类Dev

使用Pandas将Json数据加载到列中的多个值

来自分类Dev

如何将CSV文件加载到SPSS变量和值标签中

Related 相关文章

  1. 1

    将SharePrefs值加载到textview中

  2. 2

    无法将js加载到MongoDB中

  3. 3

    ZK:从Java将值加载到Selectbox中

  4. 4

    Django将字典值加载到JSON中

  5. 5

    如何从资源将值加载到数组列表中

  6. 6

    ZK:从Java将值加载到Selectbox中

  7. 7

    在调用之前将值加载到 vue.js 路由器防护中

  8. 8

    页面加载后,如何将值加载到输入文本字段中?

  9. 9

    将文件中的值加载到2D数组指针的值中

  10. 10

    KnockoutJS-将值加载到下拉列表中。选择值始终为空

  11. 11

    将本地文件(CSS或JS)加载到所选的网站中

  12. 12

    使用Node.js将数据加载到Redshift中

  13. 13

    将JSON文件加载到JS对象中

  14. 14

    将JSON文件加载到JS对象中

  15. 15

    无法将js函数加载到html中

  16. 16

    Selectize.js将回调传递加载到自定义函数

  17. 17

    将32位值加载到手臂组件中的寄存器中

  18. 18

    将文件中的值加载到列表中以及如何将它们分离

  19. 19

    如何将字典数组中的值加载到TableView单元格中

  20. 20

    将外部文件中的值加载到pom.xml中

  21. 21

    如何从访问日期/时间值将时间加载到Java中?

  22. 22

    如何将CSV文件加载到SPSS变量和值标签中

  23. 23

    Play + Anorm + Postgres-将json值加载到case类中

  24. 24

    AngularJS + UI Bootstrap Typeahead:将值从对象预加载到输入字段中

  25. 25

    使用ServletContextListener将属性文件值加载到web.xml中

  26. 26

    将范围值加载到数组在angularjs中不起作用

  27. 27

    如何将动态值从数据库加载到jQuery图表中

  28. 28

    使用Pandas将Json数据加载到列中的多个值

  29. 29

    如何将CSV文件加载到SPSS变量和值标签中

热门标签

归档