Blame view
sources/core/js/singleselect.js
2.38 KB
|
03e52840d
|
1 2 3 |
(function ($) {
$.fn.singleSelect = function () {
return this.each(function (i, select) {
|
|
31b7f2792
|
4 |
var input = $('<input/>'),
|
|
6d9380f96
|
5 |
inputTooltip = $(select).attr('data-inputtitle');
|
|
31b7f2792
|
6 7 8 |
if (inputTooltip){
input.attr('title', inputTooltip);
}
|
|
03e52840d
|
9 10 |
select = $(select);
input.css('position', 'absolute');
|
|
03e52840d
|
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
input.css({
'box-sizing': 'border-box',
'-moz-box-sizing': 'border-box',
'margin': 0,
'width': (select.width() - 5) + 'px',
'height': (select.outerHeight() - 2) + 'px',
'border': 'none',
'box-shadow': 'none',
'margin-top': '1px',
'margin-left': '1px',
'z-index': 1000
});
input.hide();
$('body').append(input);
select.on('change', function (event) {
var value = $(this).val(),
newAttr = $('option:selected', $(this)).attr('data-new');
if (!(typeof newAttr !== 'undefined' && newAttr !== false)) {
input.hide();
select.data('previous', value);
} else {
event.stopImmediatePropagation();
|
|
31b7f2792
|
34 35 |
// adjust offset, in case the user scrolled input.css(select.offset()); |
|
03e52840d
|
36 |
input.show(); |
|
31b7f2792
|
37 38 39 40 |
if ($.fn.tipsy){
input.tipsy({gravity: 'n', trigger: 'manual'});
input.tipsy('show');
}
|
|
03e52840d
|
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
select.css('background-color', 'white');
input.focus();
}
});
$(select).data('previous', $(select).val());
input.on('change', function () {
var value = $(this).val();
if (value) {
select.children().attr('selected', null);
var existingOption = select.children().filter(function (i, option) {
return ($(option).val() == value);
});
if (existingOption.length) {
existingOption.attr('selected', 'selected');
} else {
var option = $('<option/>');
option.attr('selected', 'selected').attr('value', value).text(value);
select.children().last().before(option);
}
select.val(value);
select.css('background-color', null);
input.val(null);
input.hide();
select.change();
} else {
var previous = select.data('previous');
select.children().attr('selected', null);
select.children().each(function (i, option) {
if ($(option).val() == previous) {
$(option).attr('selected', 'selected');
}
});
select.removeClass('active');
input.hide();
}
});
input.on('blur', function () {
$(this).change();
|
|
31b7f2792
|
82 83 84 |
if ($.fn.tipsy){
$(this).tipsy('hide');
}
|
|
03e52840d
|
85 86 |
}); }); |
|
6d9380f96
|
87 |
}; |
|
03e52840d
|
88 |
})(jQuery); |