Select2 used to provide a select2('search', 'term')
helper method that would have assisted with this, but it was not brought over to Select2 4.0.0.
There are a couple of ways that this could be done, but in general they all follow the same pattern of steps
- Open the Select2 dropdown
- Enter the search text into the search box
- Trigger the keyboard events necessary for Select2 to start searching (usually
input
)
So, right now, in Select2 4.0.0 the code to do that would look like
$('select').select2();
function select2_search ($el, term) {
$el.select2('open');
// Get the search box within the dropdown or the selection
// Dropdown = single, Selection = multiple
var $search = $el.data('select2').dropdown.$search || $el.data('select2').selection.$search;
// This is undocumented and may change in the future
$search.val(term);
$search.trigger('keyup');
}
$('button').on('click', function () {
var $select = $($(this).data('target'));
select2_search($select, 'Arizona');
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.js"></script>
<select style="width: 200px;" id="single">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
</select>
<button type="button" data-target="#single">Search for 'Arizona'</button>
<br /><br />
<select style="width: 200px;" id="multiple" multiple="multiple">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
</select>
<button type="button" data-target="#multiple">Search for 'Arizona'</button>
While this example does not use AJAX, it will trigger an AJAX request if Select2 is configured for it.