parent
4a130d106c
commit
e68e5cc849
@ -0,0 +1,76 @@ |
|||||||
|
(function ($) { |
||||||
|
$.fn.singleSelect = function () { |
||||||
|
return this.each(function (i, select) { |
||||||
|
var input = $('<input/>'); |
||||||
|
select = $(select); |
||||||
|
input.css('position', 'absolute'); |
||||||
|
input.css(select.offset()); |
||||||
|
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(); |
||||||
|
input.show(); |
||||||
|
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(); |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
})(jQuery); |
Loading…
Reference in new issue