我正在使用多选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。 通常,它返回一个包含所有选项值的数组。
为什么要这么做?