function matchStart(params, data) {
  // If no search term, return all
  if ($.trim(params.term) === '') {
    return data;
  }

  if (typeof data.text === 'undefined') {
    return null;
  }

  // Match from start (case-insensitive)
  if (data.text.toUpperCase().indexOf(params.term.toUpperCase()) === 0) {
    return data;
  }

  // No match
  return null;
}

$("select").select2({
  matcher: matchStart,
  width: '100%' // optional
});
