JSFiddle - React, Tailwind, and code Playground
HTML
<select id="mainmenu" style="width:300px">
<option value>Select from menu</option>
<option value="one">One</option>
<option value="two">Two</option>
<option value="three">Three</option>
</select>
<select id="submenu" style="width:300px">
<option value>Select from submenu</option>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
CSS
.ui-combobox {
position: relative;
display: inline-block;
}
.ui-combobox-toggle {
position: absolute;
top: 0;
bottom: 0;
margin-left: -1px;
padding: 0;
/* support: IE7 */
*height: 1.7em;
*top: 0.1em;
}
.ui-combobox-input {
margin: 0;
padding: 0.3em;
}
JavaScript
$(function(){
$('select').combobox();
});
$( document ).ready(function() {
$("#mainmenu").combobox({
selected: function (event, ui) {
var selectVal = $('#mainmenu :selected').val();
if(selectVal=='two'){
$('#submenu').next().find('input').focus();
}
}
});
});
/*
Combobox widget
- taken from http://jqueryui.com/autocomplete/#combobox
- added support for
- default option
- combo uses width of original select
- autoFocus
- removed
- tooltips
- setting value to "" if invalid (instead sets to default)
*/
(function ($) {
$.widget("ui.combobox", {
_create: function () {
var input,
that = this,
wasOpen = false,
select = this.element.hide(),
selected = select.children(":selected"),
defaultValue = selected.text() || "",
wrapper = this.wrapper = $("<span>")
.addClass("ui-combobox")
.insertAfter(select);
function removeIfInvalid(element) {
var value = $(element).val(),
matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(value) + "$", "i"),
valid = false;
select.children("option").each(function () {
if ($(this).text().match(matcher)) {
this.selected = valid = true;
return false;
}
});
if (!valid) {
// remove invalid value, as it didn't match anything
$(element).val(defaultValue);
select.val(defaultValue);
input.data("ui-autocomplete").term = "";
}
}
...