Search code examples
csstwitter-bootstraptwitter-bootstrap-3font-awesomeglyphicons

Bootstrap 3 Placing Icon inside input field


I am working in Bootstrap 3 and am trying to get a calendar icon inside the right hand side of the input box.

My html looks like this:

<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>

I have tried position: absolute like this:

.right-inner-addon i {
    position: absolute;
    right: 5px;
    top: 10px;
    pointer-events: none;
    font-size: 1.5em;
}
.right-inner-addon {
    position: relative;
}

But when I do it will look great in one spot, but will not be positioned correctly in another instance.

I have also tried to see if I could use text-indent to see if this would work throughout, but it had the same effect.

.right-inner-addon i, 
.form-group .right-inner-addon i {
    display: inline-block;
    z-index: 3;
    text-indent: -15px;
    font-size: 1.3em;
}

Here's a jsFiddle that might help


Solution

  • You can use input-group add-on with a 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>
    

    With a little CSS to hide the button border:

    /* 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; 
    }
    

    Demo: http://bootply.com/128059