动态添加选项时Select2多选值为null

时间:2018-11-06 09:59:07

标签: javascript jquery-select2

我正在使用多选select2输入。

该选择填充了Ajax。

$('#schedule_' + repeatersAdded + '_selectedProducts').select2({
    ajax: {
        url: ajaxurl, // AJAX URL is predefined in WordPress admin
        dataType: 'json',
        delay: 250, // delay in ms while typing when to perform a AJAX search
        data: function (params) {
            return {
                q: params.term, // search query
                action: 'Get_Products'
            };
        },
        processResults: function( data ) {
            var options = [];
            if ( data ) {

                // data is the array of arrays, and each of them contains ID and the Label of the option
                $.each( data, function( index, text ) { // do not forget that "index" is just auto incremented value
                    options.push( { id: text[0], text: text[1]  } );
                });

            }
            return {
                results: options
            };
        },
        cache: true
    },
    minimumInputLength: 3,
    placeholder: "Please select"
});

这很好。我将所选的值存储在数据库中。

当我想向用户显示数据库中的值时,我使用以下代码(args ['selected_products']包含我的商品信息)

args['selected_products'].forEach(function ( item, index ) {
        var newOption = new Option(item.text, item.id, true, true);
        $("#schedule_" + repeatersAdded + "_selectedProducts").append(newOption).trigger('change');
        selectedOptions.push(item.id);
    });

以上代码遵循文档here

select2输入完美地显示了选项,但是当我需要访问值(再次存储在DB中)时,它返回NULL。 通常,它返回一个包含所有选项值的数组。

为什么要这么做?

0 个答案:

没有答案