1
votes

I'm using Jquery Select2 for my project. I want to keep a default value in a single input field when the page is loaded. I tried this by setting initSelection while I'm initiating the select2 component like this.

   $(document).ready(function() { 
        allowClear: true,
        ajax: { // instead of writing the function to execute the request we use Select2's convenient helper
            dataType: 'json',
            url: "public/data.php",
            data: function (term, page) {
                return {
                    q: term, // search term
                    component: "map",
                    all_selected: $("#map-all").hasClass("active"),
                    parent_value: $("#city").val(),
                    child_value: ""
                };
            },
            results: function (data, page) { // parse the results into the format expected by Select2.
                // since we are using custom formatting functions we do not need to alter remote JSON data
                return {results: data};
            }
        },
        initSelection: function(element, callback) {
            return $.getJSON("public/data.php?q="+element.val()+"&component=map&all_selected=false&parent_value=&child_value=", null, function(data) {
              if ($.isFunction(callback)) {
                return callback(data);
              }
            });
        },
        formatSelection: format,
        formatResult: format,
});

However this does not work as it is should be.

But, when I make multiple: true, as a select2 option, this works perfectly. How do I do this for single hidden field?

Thanks & Regards!

1

1 Answers

1
votes

Okay, I solved this by changing the callback from return callback(data); to return callback(data[0]);. I think the reason behind this is since the field is not a multiple field, it only accepts a single object to the callback function.