it-roy-ru.com

Как добавить значок Font Awesome в поле ввода?

Как использовать значок поиска, включенный в Font Awesome, для ввода? У меня есть функция поиска на моем сайте (на основе PHPmotion), которую я хочу использовать для поиска.

Вот код: 

<div id="search-bar">

      <form method="get" action="search.php" autocomplete="off" name="form_search">
        <input type="hidden" name="type" value="videos" />
            <input autocomplete="on" id="keyword" name="keyword" value="Search Videos" onclick="clickclear(this,
            'Search Videos')" onblur="clickrecall(this,'Search Videos')" style="font-family: verdana; font-weight:bold;
            font-size: 10pt; height: 28px; width:186px; color: #000000; padding-left: 2px; float:left; border: 1px solid black; background-color:
            #ffffff" />
            <input type="image" src="http://viddir.com/themes/default/images/search.jpg" height="30" width="30" border="0" style="float:right;"/>
        <div id="searchBoxSuggestions"></div>
        </form>
        </div>
78
user2275855

Вы можете использовать другой тег вместо input и применять FontAwesome обычным способом.

вместо вашего input с типом image вы можете использовать это:

<i class="icon-search icon-2x"></i>

быстро CSS:

.icon-search {
    color:white;
    background-color:black;
}

Вот короткая скрипка: DEMO

Вы можете сделать его немного лучше и добавить функциональность события к объекту i, что можно сделать с помощью объекта <button type="submit"> вместо i или с помощью javascript.

Раствор кнопки будет примерно таким:

<button type="submit" class="icon-search icon-large"></button>

И CSS:

.icon-search {
    height:32px;
    width:32px;
    border: none;
    cursor: pointer;
    color:white;
    background-color:black;
    position:relative;
}

вот моя скрипка, обновленная кнопкой вместо i: DEMO


Обновление: Использование FontAwesome для любого тега

Проблема с FontAwsome заключается в том, что его таблица стилей использует псевдоэлементы :before для добавления значков к элементу, а псевдоэлементы не работают/не допускаются для элементов input. Вот почему использование FontAwesome обычным способом не будет работать с input.

Но решение есть - вы можете использовать FontAwesome как обычный шрифт, например:

CSS:

input[type="submit"] {
    font-family: FontAwesome;
}

HTML:

<input type="submit" class="search" value="&#xf002;" />

Глифы могут быть переданы как значения атрибута value. Коды ascii для отдельных букв/значков можно найти в файле FontAwesome css, вам просто нужно изменить их на HTML-код ascii, например от \f002 до &#xf002;, и он должен работать.

Ссылка на FontAwesome ascii code (cheatsheet): fortawesome.github.io/Font-Awesome/cheatsheet

Размер значков можно легко настроить с помощью font-size.

Посмотрите приведенный выше пример с использованием элемента input в jsfidde:

ДЕМО


Обновление: FontAwesome 5

В FontAwesome версии 5 CSS, необходимый для этого решения, изменился - изменилось имя семейства шрифтов и должен быть указан вес шрифта:

input[type="submit"] {
    font-family: "Font Awesome 5 Free"; // for the open access version
    font-size: 1.3333333333333333em;
    font-weight: 900;
}

Смотрите комментарий @WillFastie со ссылкой на обновленную скрипку ниже. Спасибо!

101
Martin Turjak

Вот решение, которое работает с простым CSS и стандартным шрифтом, великолепным синтаксисом, не требует значений Unicode и т.д.

  1. Создайте тег <input>, за которым следует стандартный тег <i> с нужным значком.

  2. Используйте относительное позиционирование вместе с порядком более высокого уровня (z-index) и переместите значок поверх и выше поля ввода.

  3. (Необязательно) Вы можете сделать значок активным, чтобы, возможно, отправить данные, через стандартный JS.

См. Три фрагмента кода ниже для HTML/CSS/JS. 

Или то же самое в JSFiddle здесь: Пример: http://jsfiddle.net/ethanpil/ws1g27y3/

$('#filtersubmit').click(function() {
  alert('Searching for ' + $('#filter').val());
});
#filtersubmit {
  position: relative;
  z-index: 1;
  left: -25px;
  top: 1px;
  color: #7B7B7B;
  cursor: pointer;
  width: 0;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input id="filter" type="text" placeholder="Search" />
<i id="filtersubmit" class="fa fa-search"></i>

40
ethanpil

Для тех, кто интересуется, как получить значки FontAwesome для ввода данных drupal, вы должны сначала выполнить decode_entities следующим образом:

$form['submit'] = array(
'#type' => 'submit',
'#value' => decode_entities('&#xf014;'), // code for FontAwesome trash icon
// etc.
);
9
Tom Appleseed

Измените свой ввод на элемент кнопки, и вы можете использовать классы Font Awesome на нем. Выравнивание глифа не очень хорошо в демо, но вы поняли:

http://tinker.io/802b6/1

<div id="search-bar">
  <form method="get" action="search.php" autocomplete="off" name="form_search">
    <input type="hidden" name="type" value="videos" />
        <input autocomplete="on" id="keyword" name="keyword" value="Search Videos" onclick="clickclear(this,
        'Search Videos')" onblur="clickrecall(this,'Search Videos')" style="font-family: verdana; font-weight:bold;
        font-size: 10pt; height: 28px; width:186px; color: #000000; padding-left: 2px; border: 1px solid black; background-color:
        #ffffff" /><!--
        --><button class="icon-search">Search</button>
    <div id="searchBoxSuggestions"></div>
    </form>
</div>

#search-bar .icon-search {
    width: 30px;
    height: 30px;
    background: black;
    color: white;
    border: none;
    overflow: hidden;
    vertical-align: middle;
    padding: 0;
}

#search-bar .icon-search:before {
    display: inline-block;
    width: 30px;
    height: 30px;
}

Преимущество здесь в том, что форма все еще полностью функциональна без необходимости добавлять обработчики событий для элементов, которые не являются кнопками, но выглядят как один.

4
cimmanon
.fa-file-o {
    position: absolute;
    left: 50px;
    top: 15px;
    color: #ffffff
}

<div>
 <span class="fa fa-file-o"></span>
 <input type="button" name="" value="IMPORT FILE"/>
</div>
0
dxpkumar