A style rewrite of <select>
element.
This plugin only provide style rewrite and basic functions. If you need more advanced funcitons, see these for more details:
<select data-am-selected>
<option value="a">Apple</option>
<option value="b">Banana</option>
<option value="o">Orange</option>
<option value="m">Mango</option>
<option value="d" disabled>Disabled</option>
</select>
<select multiple data-am-selected>
<option value="a">Apple</option>
<option value="b">Banana</option>
<option value="o">Orange</option>
<option value="m">Mango</option>
</select>
<select multiple data-am-selected>
<option value="a">Apple</option>
<option value="b" selected>Banana</option>
<option value="o">Orange</option>
<option value="m" selected>Mango</option>
</select>
<select multiple data-am-selected>
<optgroup label="Fruits">
<option value="a">Apple</option>
<option value="b">Banana</option>
<option value="o">Orange</option>
<option value="m">Mango</option>
</optgroup>
<optgroup label="Equipments">
<option value="phone">iPhone</option>
<option value="im">iMac</option>
<option value="mbp">Macbook Pro</option>
</optgroup>
</select>
btnWidth
: Button width. Number or percentage. E.g. btnWidth: '50%'
btnSize
: Button size. [xl|lg|sm|xs]
(More details in Button).btnStyle
: Button style. [primary|secondary|success|warning|danger]
<select data-am-selected="{btnWidth: '40%', btnSize: 'sm', btnStyle: 'secondary'}">
<option value="a">Apple</option>
<option value="b">Banana</option>
<option value="o">Orange</option>
<option value="m">Mango</option>
</select>
<select data-am-selected="{maxHeight: 100}">
<option value="a">Apple</option>
<option value="b">Banana</option>
<option value="o">Orange</option>
<option value="m">Mango</option>
<option value="phone">iPhone</option>
<option value="im">iMac</option>
<option value="mbp">Macbook Pro</option>
</select>
<select data-am-selected="{dropUp: 1}">
<option value="a">Apple</option>
<option value="b">Banana</option>
<option value="o">Orange</option>
<option value="m">Mango</option>
<option value="phone">iPhone</option>
<option value="im">iMac</option>
<option value="mbp">Macbook Pro</option>
</select>
Simple search based on jQuery :contains
selector.
<select data-am-selected="{searchBox: 1}">
<option value="a">Apple</option>
<option value="b">Banana</option>
<option value="o">Orange</option>
<option value="m">Mango</option>
<option value="phone">iPhone</option>
<option value="im">iMac</option>
<option value="mbp">Macbook Pro</option>
</select>
<select multiple data-am-selected minchecked="2" maxchecked="3">
<option value="a">Apple</option>
<option value="b">Banana</option>
<option value="o">Orange</option>
<option value="m">Mango</option>
</select>
New in v2.3!
JS can help inserting, removing and selecting options in <select>
. When modifying the <select>
, dropdown menu need to be rerendered.
changed.selected.amui
event need to be manuelly triggered.Attention:
// MutationObserver can observe any use of `attr()`.
$('select').find('option').eq(1).attr('selected', true);
// Following operations won't be observed by MutationObserver
$('select').val('aa');
$('select').find('option').eq(1).prop('selected', true);
$('select').find('option')(1).selected = true;
<select id="js-selected" data-am-selected>
<option value="a">Apple</option>
<option value="b" selected>Banana</option>
<option value="o">Orange</option>
<option value="m">Mango</option>
</select>
<hr/>
<button type="button" data-selected="add" class="am-btn am-btn-primary">Insert Option</button>
<button type="button" data-selected="toggle" class="am-btn am-btn-secondary">Troggle Orange</button>
<button type="button" data-selected="disable" class="am-btn am-btn-danger">Troggle Mango</button>
<hr/>
<div id="js-selected-info"></div>
$(function() {
var $selected = $('#js-selected');
var $o = $selected.find('option[value="o"]');
var $m = $selected.find('option[value="m"]');
var i = 0;
$('[data-selected]').on('click', function() {
var action = $(this).data('selected');
if (action === 'add') {
$selected.append('<option value="o' + i +'">Dynamically inserted option ' + i + '</option>');
i++;
}
if (action === 'toggle') {
$o.attr('selected', !$o.get(0).selected);
}
if (action === 'disable') {
$m[0].disabled = !$m[0].disabled;
}
// When using browsers that don't support MutationObserver, `changed.selected.amui` event need to be manuelly triggered.
if (!$.AMUI.support.mutationobserver) {
$selected.trigger('changed.selected.amui');
}
});
$selected.on('change', function() {
$('#js-selected-info').html([
'选中项:<strong class="am-text-danger">',
[$(this).find('option').eq(this.selectedIndex).text()],
'</strong> 值:<strong class="am-text-warning">',
$(this).val(),
'</strong>'
].join(''));
});
});
Add data-am-selected
to <select>
element as shown above.
Enable style rewrite using $('select').selected(options)
.
If the project also contains jQuery Form, $.fn.selected
will cause naming confliction. Please use $('select').selectIt(options)
instead.
$(function() {
// 使用默认参数
$('select').selected();
// 设置参数
$('select').selected({
btnWidth: '300px',
btnSize: 'sm',
btnStyle: 'primary',
maxHeight: '100px'
});
});
btnWidth: null
: Button width. Default value is 200px
btnSize: null
: Button size. Available options include xl|sm|lg|xl
btnStyle: 'default'
: Button style. Available options include primary|secondary|success|warning|danger
maxHeight: null
: The maximum height.dropUp: 0
: Dropup if true. Default value is 0
(false
)