JSFiddle - React, Tailwind, and code Playground
HTML
<input type="search">
<br>
<select multiple>
<option value="1">ham</option>
<option value="2">cheese</option>
<option value="3">pizza</option>
<option value="4">pancakes</option>
<option value="5">oreos</option>
</select>
JavaScript
$('select').each(function(){
var $select = $(this);
$select.data('options', $select.find('option'));
});
function filter($select, search) {
var $prev = null;
var $options = $select.data('options');
search = search.trim().toLowerCase();
$options.each(function(){
var $option = $(this);
var optionText = $option.text();
if(search == "" || optionText.indexOf(search) >= 0) {
if ($option.parent().length) {
$prev = $option;
return;
}
if (!$prev) $select.prepend($option);
else $prev.after($option);
$prev = $option;
}
else {
$option.remove();
}
});
}
var $select = $('select');
$('input').on('keyup', function(){
filter($select, this.value);
});