Select2-templateSelection params

by Shashank D

HTML

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.min.css">

<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.min.js"></script>

<select id="user-email-address" name="email" style='width: 200px'></select>
<select id="user-name" name="name" style='width: 200px'></select>

JavaScript

$(document).ready(function() {
    $('#user-email-address, #user-name').select2({
        placeholder: "Type an email address",
        ajax: {
            url: '/echo/json/',
            dataType: 'json',
            type: 'POST',
            delay: 250,
            data: function(params) {
                return {
                    json: '[{"id":"apple","email":"[email protected]"},{"id":"pear","email":"[email protected]"},{"id":"orange","email":"[email protected]"},{"id":"lemon","email":"[email protected]"},{"id":"[email protected]","email":"[email protected]"}]',
                    delay: 0
                };
            },
            processResults: function(data, params) {
                var payload = {
                    results: data
                };
                return payload;
            },
            cache: true
        },
        templateResult: function(result) {
            return result.email;
        },
        templateSelection: function(selection,inst) {
          	if(inst && inst.length) {
            	return inst.attr('id') === 'select2-user-email-address-container' ? selection.email : selection.id;
            }
        }
    });

});