Чтобы уменьшить длину моего кода, я решил создать функцию javascript для инициализации плагина select2.сейчас я пишу очень длинный код для инициализации одного элемента.
$("#add_multiple_lr #trips_div .last_added .location_id").select2({
initSelection: function(element, callback) {
var elementText = $(element).attr('json-value');
callback(JSON.parse(elementText));
},
minimumInputLength: 2,
ajax: {
url: "<?php echo site_url('masters/locations/json_search'); ?>",
dataType: 'json',
type: "POST",
quietMillis: 50,
data: function (term) {
return {
term: term,
location_type: 'station',
location_county: ['india', 'bangladesh']
};
},
results: function (data) {
return {
results: $.map(data, function (item) {
return {
text: item.text,
id: item.id
}
})
};
}
}
});
для одного или двух элементов это нормально, писать этот код, но когда дело доходит до 10-15 элементов, это становится очень запутанным и длиннымкод для этого я разработал ниже code.
function initSelect2(reference, url, additional_data = {}, minimumInputLength = 2)
{
$(reference).select2({
initSelection: function(element, callback) {
var elementText = $(element).attr('json-value');
callback(JSON.parse(elementText));
},
minimumInputLength: minimumInputLength,
ajax: {
url: url,
dataType: 'json',
type: "POST",
quietMillis: 50,
data: function (term) {
return {
term: term,
additional_data
};
},
results: function (data) {
return {
results: $.map(data, function (item) {
return {
text: item.text,
id: item.id
}
})
};
}
}
});
}
и назвав его
initSelect2(
"#add_multiple_lr #lr_party, #add_multiple_lr #lr_payable_party",
"<?php echo site_url('masters/locations/json_search'); ?>",
{location_type: 'station', location_country: ['india', 'bangladesh']}
);
я просто хочу вернуть ключи extra_data (параметра) и их свойство.