Bootstrap 3 Размещение значка внутри поля ввода
Я работаю в Bootstrap 3 и пытаюсь получить значок календаря в правой части окна ввода.
Мой html выглядит так:
<div class="col-md-12">
<div class='right-inner-addon col-md-2 date datepicker'
data-date-format="yyyy-mm-dd">
<input name='name' value="" type="text" class="form-control date-picker"
data-date-format="yyyy-mm-dd"/>
<i class="fa fa-calendar"></i>
</div>
</div>
Я пробовал position: absolute
следующим образом:
.right-inner-addon i {
position: absolute;
right: 5px;
top: 10px;
pointer-events: none;
font-size: 1.5em;
}
.right-inner-addon {
position: relative;
}
Но когда я это сделаю, он будет отлично смотреться в одном месте, но не будет правильно размещен в другом экземпляре.
Я также попытался выяснить, могу ли я использовать text-indent
, чтобы увидеть, будет ли это работать повсюду, но он имеет тот же эффект.
.right-inner-addon i,
.form-group .right-inner-addon i {
display: inline-block;
z-index: 3;
text-indent: -15px;
font-size: 1.3em;
}
Здесь jsFiddle, который может помочь
Ответы
Ответ 1
Вы можете использовать input-group add-on
с input-group-btn
.
<div class="col-md-12">
<div class='input-group add-on col-md-2 date datepicker'
data-date-format="yyyy-mm-dd">
<input name='name' value="" type="text" class="form-control date-picker"
data-date-format="yyyy-mm-dd"/>
<div class="input-group-btn">
<button class="btn btn-default">
<i class="fa fa-calendar"></i>
</button>
</div>
</div>
</div>
С небольшим CSS, чтобы скрыть границу кнопки:
/* remove border between controls */
.add-on .input-group-btn > .btn {
border-left-width: 0;
left:-2px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
/* stop the glowing blue shadow */
.add-on .form-control:focus {
-webkit-box-shadow: none;
box-shadow: none;
border-color:#cccccc;
}
Демо: http://bootply.com/128059
Ответ 2
Использование исходных состояний проверки подлинности bootstrap, вероятно, предпочтительнее для написания пользовательского CSS.
И я уверен, что я тот, кто придумал этот CSS.
Просто используйте .has-feedback
в своей группе форм и .form-control-feedback
на своем значке:
<div class="form-group has-feedback">
<label class="control-label sr-only">DatePicker</label>
<input type="text" class="form-control date-picker" />
<i class="fa fa-calendar form-control-feedback"></i>
</div>
![screenshot]()
Ответ 3
Проверьте эту скрипту, адаптирован из этого ответа
Отличие состоит в том, что в вашем случае <i>
был помещен после <input>
. Обмен их заставляет его работать. Поэтому позиционирование создавало беспорядок, а не цитируемый ответ.
Ответ 4
В приведенных выше ответах нажмите кнопку ввода, но нажмите на тег i, который не работает.
поэтому я добавил свой код в ответ @KyleMit
<div class="form-group has-feedback">
<input type="text" name="txtDatepicker" class="form-control date-picker" />
<i class="glyphicon glyphicon-calendar"
onclick="javascript:$('input[name=txtDatepicker]').data('DateTimePicker').show();">
</i>
</div>
Я немного изменил css для своего пользовательского интерфейса. Вы также можете изменить его.
<style>
.right-inner-addon {
position: relative;
}
.right-inner-addon input {
padding-right: 30px;
}
.right-inner-addon i {
position: absolute;
left: 256px;
padding: 14px 12px;
}
</style>