Selectize.js:如何对整数值的选项进行排序

Selectize.js: How to sort options on values which are integers?

本文关键字:选项 排序 整数 js Selectize      更新时间:2023-09-26

我有一个选项数组,我将其输入到selectize中,如下所示:

<select data-placeholder="Select #" id="my-select"></select>
var myOptions = [1, 20, 7, 30, 90, 365].map( function ( value) {
    return {
        text: value,
        value: value
    };
});  
$('#my-select').selectize({
    options: myOptions,
    create: true,
    sortField: {
        field: 'text',
        direction: 'asc'
    }
});

当我加载视图时,选择框会第一次显示正确排序的选项,但当我添加自定义选项(在我的情况下为100)时,列表不会按排序顺序正确更新。看起来列表确实被引用了,但它假设字段"text"的类型是字符串,而不是整数。在selectize中,有没有一种方法可以在基于整数的字段上指定排序?

以下是当selectbox被初始化时,以及在我添加了一个自定义输入100之后,选项的顺序看起来如何

初始-------自定义输入后
1-------------------1
7----------------100
30-------------------7
90-------------------30
200----------------90
365----------------200
----------------------365

var userAddedOption = parseInt($('#user_added_option').val(), 10); // assume its = 100
var myOptions =  [1, 7, 30, 90, 365];
myOptions.push(userAddedOption);
myOptions = myOptions.map(function(value) {
    return {
        text: value,
        value: value
    };
});
$('#my-select').selectize({
    options: myOptions,
    create: true,
    sortField: function(item1, item2) {
        return item1.value - item2.value;
    },
    onInitialize: function() {
        this.addItem(userAddedOption);
    }
});