How to set selected value of jquery select2?

后端 未结 28 1132
野趣味
野趣味 2020-11-30 00:00

This belong to codes prior to select2 version 4

I have a simple code of select2 that get data from ajax



        
相关标签:
28条回答
  • 2020-11-30 00:43

    If you are using an Input box, you must set the "multiple" property with its value as "true". For example,

    <script>
        $(document).ready(function () {
    
            var arr = [{ id: 100, text: 'Lorem Ipsum 1' },
                { id: 200, text: 'Lorem Ipsum 2'}];
    
            $('#inputID').select2({
                data: arr,
                width: 200,
                multiple: true
            });
        });
    </script>
    
    0 讨论(0)
  • 2020-11-30 00:46

    I did like this-

    $("#drpServices").select2().val("0").trigger("change");
    
    0 讨论(0)
  • 2020-11-30 00:46

    I think you need the initSelection function

    $("#programid").select2({
      placeholder: "Select a Program",
      allowClear: true,
      minimumInputLength: 3,
      ajax: {
        url: "ajax.php",
        dataType: 'json',
        quietMillis: 200,
        data: function (term, page) {
          return {
            term: term, //search term
            flag: 'selectprogram',
            page: page // page number
          };
        },
        results: function (data) {
          return {results: data};
        }
      },
      initSelection: function (element, callback) {
        var id = $(element).val();
        if (id !== "") {
          $.ajax("ajax.php/get_where", {
            data: {programid: id},
            dataType: "json"
          }).done(function (data) {
            $.each(data, function (i, value) {
              callback({"text": value.text, "id": value.id});
            });
            ;
          });
        }
      },
      dropdownCssClass: "bigdrop",
      escapeMarkup: function (m) { return m; }
    });
    
    0 讨论(0)
  • 2020-11-30 00:47

    In select2 < version4 there is the option initSelection() for remote data loading, through which it is possible to set initial value for the input as in edit mode.

    $("#e6").select2({
        placeholder: "Search for a repository",
        minimumInputLength: 1,
        ajax: { 
            // instead of writing the function to execute the request we use Select2's convenient helper
            url: "https://api.github.com/search/repositories",
            dataType: 'json',
            quietMillis: 250,
            data: function (term, page) {
                return {
                    q: term, // search term
                };
            },
            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 the remote JSON data
                return { results: data.items };
            },
            cache: true
        },
        initSelection: function(element, callback) {
            // the input tag has a value attribute preloaded that points to a preselected repository's id
            // this function resolves that id attribute to an object that select2 can render
            // using its formatResult renderer - that way the repository name is shown preselected
            var id = $(element).val();
            if (id !== "") {
                $.ajax("https://api.github.com/repositories/" + id, {
                    dataType: "json"
                }).done(function(data) { callback(data); });
            }
        },
        formatResult: repoFormatResult, // omitted for brevity, see the source of this page
        formatSelection: repoFormatSelection,  // omitted for brevity, see the source of this page
        dropdownCssClass: "bigdrop", // apply css that makes the dropdown taller
        escapeMarkup: function (m) { return m; } // we do not want to escape markup since we are displaying html in results
    });
    

    Source Documentation : Select2 - 3.5.3

    0 讨论(0)
  • 2020-11-30 00:48

    you can use this code :

    $("#programid").val(["number:2", "number:3"]).trigger("change");
    

    where 2 in "number:2" and 3 in "number:3" are id field in object array

    0 讨论(0)
  • 2020-11-30 00:48

    For multiple values something like this:

    $("#HouseIds").select2("val", @Newtonsoft.Json.JsonConvert.SerializeObject(Model.HouseIds));
    

    which will translate to something like this

    $("#HouseIds").select2("val", [35293,49525]);
    
    0 讨论(0)
提交回复
热议问题