我使用select2插件进行选择下拉列表。我在页面中有多个选择下拉框,我需要将浮动标签应用于选定的下拉列表。
我尝试过谷歌但是我找不到任何预期的结果。
我提供了迄今为止我尝试过的代码。
HTML
<div class="container">
<div class="row">
<div class="col-md-6 col-lg-6 col-sm-6">
<label class="hor-menu visible-xs visible-xs control-label col-sm-1"></label>
<div class="form-group form-md-line-input form-md-floating-label" style="margin-top: 13px;">
<select name="cboNGrp" id="cboNGrp" class="form-control select2me input-xlarge" data-live-search="true" data-size="8"></select>
<label class="form_control_1 head_ctrl_label" style="padding-top: 2px;">Type</label>
</div>
</div>
<div class="col-md-6 col-lg-6 col-sm-6">
<div class="form-group form-md-line-input head_ctrl">
<label class="hor-menu visible-xs visible-xs control-label col-sm-1"></label>
<select name="cboEmrGrp" id="cboEmrGrp" class="select2me form-control input-xlarge"></select>
<label class="form_control_1 head_ctrl_label">E / M</label>
</div>
</div>
</div>
</div>
JS
$('.select2me').click(function(e){
if($(this).find('select2-dropdown-open')) {
$('label.head_ctrl_label').css('margin-top', '-25px');
}
e.preventDefault();
});
Image showing user clicks the Dropdown to select Option
Image showing the bug floating label applies to all the dropdown not only selected one
答案 0 :(得分:0)
尝试以下
$('.select2me').click(function(e){
if($(this).find('select2-dropdown-open')) {
$(this).next('.head_ctrl_label').css('margin-top', '-25px'); }
e.preventDefault();
});
答案 1 :(得分:0)
希望这对您有帮助!
$('select').select2().on('select2:open', (elm) => {
const targetLabel = $(elm.target).prev('label');
targetLabel.addClass('selected');
}).on('select2:close', (elm) => {
const target = $(elm.target);
const targetLabel = target.prev('label');
const targetOptions = $(elm.target.selectedOptions);
if (targetOptions.length === 0) {
targetLabel.removeClass('selected');
}
});
SCSS
label {
&.selected {
top: 0;
font-size: 11px;
transform: translateY(0);
}
font-size: 16px;
color: #dfdfdf;
position: absolute;
z-index: 1;
top: 50%;
left: 15px;
transform: translateY(-50%);
transition: all 0.2s ease 0s;
}