select2
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/select2/3.3.1/select2.min.js"></script>
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/select2/3.3.1/select2.min.css">
<p>
<select style="width:300px" id="select">
<optgroup label="Alaskan/Hawaiian Time Zone">
<option value="AK">Alaska</option>
<option value="HI">Hawaii</option>
</optgroup>
<optgroup label="Pacific Time Zone">
<option value="CA">California</option>
<option value="NV">Nevada</option>
<option value="OR">Oregon</option>
<option value="WA">Washington</option>
</optgroup>
<optgroup label="Mountain Time Zone">
<option value="AZ">Arizona</option>
<option value="CO">Colorado</option>
<option value="ID">Idaho</option>
<option value="MT">Montana</option><option value="NE">Nebraska</option>
<option value="NM">New Mexico</option>
<option value="ND">North Dakota</option>
<option value="UT">Utah</option>
<option value="WY">Wyoming</option>
</optgroup>
<optgroup label="Central Time Zone">
<option value="AL">Alabama</option>
<option value="AR">Arkansas</option>
<option value="IL">Illinois</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="OK">Oklahoma</option>
<option...
CSS
body {
font-family: sans-serif;
}
ul {
padding: 0;
}
.info, .selected-info {
color: #00f;
font-weight: bold;
font-size: 10px;
float: right;
}
.info {
position: relative;
z-index: 1;
}
.selected-info {
display: inline;
}
.selected-state {
display: inline;
float: left;
}
.info:hover, .selected-info:hover {
text-decoration: underline;
}
JavaScript
function formatResult(state, container) {
if (!state.id) return state.text; // optgroup
container.append(state.text);
$('<i class="info">link</i>')
.appendTo(container)
.mouseup(function(e) {
e.stopPropagation();
})
.click(function(e) {
e.preventDefault();
alert('Click!');
$('#log').text('clicked');
});
}
function formatSelection(state, container) {
container.append($('<span class="selected-state"></span>').text(state.text));
$('<i class="selected-info">link</i>')
.appendTo(container)
.mousedown(function(e) {
e.stopPropagation();
})
.click(function(e) {
e.preventDefault();
alert('Selection Click!');
$('#log').text('selection clicked');
});
}
$('#select').select2({
formatResult: formatResult,
formatSelection: formatSelection
});