Ошибка выравнивания входной группы-бутстрапа при добавлении диапазона для требуемых звездочек
У меня есть следующий DatePicker Bootstrap. Когда я добавил span (spanAstreisk
), чтобы отобразить звездочку, указывающую на обязательное поле, высота значков увеличилась, и похоже, что она не выровнена по текстовому полю. Как я могу это исправить?
Fiddle2: https://jsfiddle.net/ezvzvvqg/15/
Fiddle1: https://jsfiddle.net/ezvzvvqg/10/
![enter image description here]()
HTML
<table class="table table-user-information" style="font-size:12px;">
<tbody>
<tr>
<td class="tdPopupTextDescription">Effective Date:</td>
<td id="tdEffectiveDate">
<div id="divDatePickerEffectiveDate" class="input-group date" data-provide="datepicker" data-date-show-on-focus="true">
<input type="text" class="form-control required error" id="txtEffectiveDate" maxlength="10" style="display:inline;">
<label for="txtEffectiveDate" generated="true" class="error">This field is required.</label>
<div class="input-group-addon">
<span class="glyphicon glyphicon-th"></span>
</div>
<span class="glyphicon glyphicon-asterisk requiredAsterisk"></span>
</div>
</td>
</tr>
</tbody>
</table>
Ответы
Ответ 1
Похоже, проблема заключается в том, что вы помещаете <label>
внутри input-group
, но только внутри input-group-addon
, input-group-btn
и form-control
должны находиться внутри input-group
. Это <label>
заставляет значки растягиваться для размещения метки. Поэтому я удалил <label>
и вывел его за пределы input-group
. После того, как я это сделал, аддон с звездочкой работал нормально.
Вот скрипка с моими изменениями: https://jsfiddle.net/ezvzvvqg/18/
Здесь он находится в форме Stack Snippet:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.1/js/bootstrap-datepicker.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.1/css/bootstrap-datepicker3.css" rel="stylesheet"/>
<table class="table table-user-information" style="font-size:12px;">
<tbody>
<tr>
<td class="tdPopupTextDescription">Effective Date:</td>
<td id="tdEffectiveDate">
<div id="divDatePickerEffectiveDate" class="input-group date" data-provide="datepicker" data-date-show-on-focus="true">
<input type="text" class="form-control required error" id="txtEffectiveDate" maxlength="10" style="display:inline;">
<div class="input-group-addon">
<span class="glyphicon glyphicon-th"></span>
</div>
<span class="input-group-addon" id="sizing-addon1"><span id="spanAstreisk" class="glyphicon glyphicon-asterisk requiredAsterisk"></span></span>
</div>
<label for="txtEffectiveDate" generated="true" class="error">This field is required.</label>
</td>
</tr>
</tbody>
</table>
Ответ 2
Здесь новый код
<table>
<tr>
<td class="tdPopupTextDescription">Effective Date:
</td>
<td id="tdEffectiveDate">
<div class="input-group date" data-provide="datepicker" data-date-show-on-focus="true">
<input type="text" class="form-control required" id="txtEffectiveDate" maxlength="10" style="display:inline;">
<div class="input-group-addon">
<span class="glyphicon glyphicon-th"></span>
</div>
<div class="input-group-addon">
<span id="test" class="glyphicon glyphicon-asterisk requiredAsterisk"></span>
</div>
<div class="input-group-addon spanAstreisk">
<span id="spanAstreisk" class="glyphicon glyphicon-asterisk requiredAsterisk"></span>
</div>
</div>
</td>
</tr>
</table>
CSS
.spanAstreisk{
background:none;
border:0
}
Посмотрите на это решение: jsfiddle.net/SeniorFront/z24cc91a
Ответ 3
Вам просто нужно немного позиционирования:
#spanAstreisk{
position: absolute;
top: 0;
}
Update:
Ярлык, который у вас был внутри группы ввода, является реальной проблемой, а не звездочкой. По крайней мере, не в последней скрипке, которая у вас есть.
Метка изменяет поток и выравнивание ввода и значок. Вы можете отключить его из потока с абсолютным позиционированием:
#divDatePickerEffectiveDate label{
position: absolute; left: 0;
bottom: -25px;
}
https://jsfiddle.net/7512wj48/
Ответ 4
Рабочий пример
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style type="text/css">
</style>
</head>
<body>
<table>
<tr>
<td class="tdPopupTextDescription">Effective Date:
</td>
<td id="tdEffectiveDate">
<div class="input-group date" data-provide="datepicker" data-date-show-on-focus="true">
<input type="text" class="form-control required" id="txtEffectiveDate" maxlength="" style="display:inline;">
<div class="input-group-addon">
<span class="glyphicon glyphicon-th"></span>
</div>
<div class="input-group-addon">
<span id="test" class="glyphicon glyphicon-asterisk requiredAsterisk"></span>
</div>
<div class="input-group" style="height: 20px;">
<span id="spanAstreisk" class="glyphicon glyphicon-asterisk requiredAsterisk" style="position: absolute;top:10px;"></span>
</div>
</div>
</td>
</tr>
</table>
</body>
</html>
Ответ 5
Здесь у вас много правильных ответов, поэтому другой подход заключается в том, чтобы поместить звездочку в поле ввода, чтобы указать, что поле является обязательным.
$("#txtEffectiveDate").on("focus",function(){
$( "#spanAstreisk" ).animate({
opacity: 1
},600);
$("#spanAstreisk").css("opacity",1);
}).on("blur",function(){
$( "#spanAstreisk" ).animate({
opacity: 0.25
},600);
});
#spanAstreisk {
position:absolute;
top:1rem;
right:4.5rem;
opacity:.25;
z-index:9999;
color:red;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.1/css/bootstrap-datepicker3.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.1/js/bootstrap-datepicker.js"></script>
<table>
<tr>
<td class="tdPopupTextDescription">Effective Date:
</td>
<td id="tdEffectiveDate">
<div class="input-group date" data-provide="datepicker" data-date-show-on-focus="true">
<input type="text" class="form-control required" id="txtEffectiveDate" maxlength="10" style="display:inline;">
<span id="spanAstreisk" class="glyphicon glyphicon-asterisk requiredAsterisk"></span>
<div class="input-group-addon">
<span class="glyphicon glyphicon-th"></span>
</div>
</div>
</td>
</tr>
</table>
Ответ 6
Я добавляю css, работая с позицией, и вот результат
https://jsfiddle.net/e1sue1ym/
`.input-group.date {
padding-right: 20px;
margin-bottom: 20px;
}
.input-group.date label.error {
position: absolute;
bottom: -23px;
left: 0;
}
.input-group .requiredAsterisk {
position: absolute;
right: 0px;
}`
Это то, чего вы хотите достичь?
Ответ 7
<table class="table table-user-information" style="font-size:12px;">
<tbody>
<tr>
<td class="tdPopupTextDescription">Effective Date:</td>
<td id="tdEffectiveDate">
<div id="divDatePickerEffectiveDate" class="input-group date" data-provide="datepicker" data-date-show-on-focus="true">
<input type="text" class="form-control required error" id="txtEffectiveDate" maxlength="10" style="display:inline;">
<div class="input-group-addon">
<span class="glyphicon glyphicon-th"></span>
</div>
<span class="input-group-addon" id="sizing-addon1"><span id="spanAstreisk" class="glyphicon glyphicon-asterisk requiredAsterisk"></span></span>
</div>
<label for="txtEffectiveDate" generated="true" class="error">This field is required.</label>
</td>
</tr>
</tbody>
</table>
И для вашей таблицы стилей
----- Таблица стилей ----
#sizing-addon1{
background-color: transparent;
border:none;
font-size: 9px;
font-weight: normal;
padding:2px 5px;
color:#C00
}
Ответ 8
Еще один способ добавить следующий стиль в область astrisk:
#spanAstreisk {
display: table-cell;
vertical-align: middle;
}
Вот ваш обновленный скрипт: Fiddle