在Twitter Bootstrap 2中添加图标以提交按钮


227

我想在表单输入提交按钮上使用twitter bootstrap图标。

http://twitter.github.com/bootstrap/base-css.html#icons上的示例主要显示样式超链接。

我最近来的是让该图标显示在按钮旁边,但不在里面。

<div class="input-prepend">
   <span class="add-on"><i class="icon-user icon-white"></i></span>
   <input type="submit" class="btn-primary" value="Login" >
</div>

2
我试了一段时间没有成功。基本上,您不能在按钮的值内添加html元素。
约翰·古德曼

@JohnGoodman应该是答案,而不是评论。接受的答案是一种变通办法,而不是对该问题的直接答复。
cartbeforehorse 2014年

Answers:


394

您可以使用按钮标签代替输入

<button type="submit" class="btn btn-primary">
  <i class="icon-user icon-white"></i> Sign in
</button>

12
此方法有效,但是,请参阅w3schools.com/tags/tag_button.asp,以获取有关button标签的含义及其跨浏览器效果的更多信息。请谨慎使用,尤其是在表单上。
Matenia Rossides'3

10
我已经在Chrome,Firefox,Safari(在win7上)和IE8的<form>标记中成功将其作为提交按钮进行了测试
贝尔先生,2012年

4
我使用这种方法的唯一问题是,如果表单中还有其他按钮,那么在按下键盘上的Enter键时,您的表单将不会提交,因为其他按钮中的一个优先。任何已知的解决方法?
Jeshurun 2012年

2
这正是我在做的。但是,添加<i>标签后,该图标没有出现。直到我发现需要清除缓存之前,这非常令人发疯。如果您遇到相同的问题,请点击Ctrl+F5清除缓存并刷新,然后查看光荣的图标!
Aditya MP

2
我需要添加onClick="submit();"
TimP,2013年

67

我认为您可以为此使用标签标签。这是twitter bootstrap HTML导航栏的示例:

<form class="navbar-search">
    <input type="text" class="search-query" placeholder="Search here" />        
    <label for="mySubmit" class="btn"><i class="icon-search icon-white"></i> Search me</label>
    <input id="mySubmit" type="submit" value="Go" class="hidden" />
</form>

基本上,您将获得输入的标签元素(类型=提交),然后隐藏实际的输入提交。用户可以单击label元素,但仍然可以完成表单提交。


9
这对我来说是两全其美。您得到所需的样式,并且没有使用链接或JavaScript。
AaronLS 2012年

1
尽管这确实应用了样式并且看起来不错,但是当用户在输入字段中按Enter键时,它阻止了表单的提交。(仅在FF17上测试)
理查德(Richard

1
显然,这是我的最佳解决方案。干杯!
Armel Larcier

14

我认为您应该尝试设计用于Twitter Bootstrap的FontAwesome

<button class="btn btn-primary icon-save">Button With Icon</button>

11

您可以在图标的某处添加<a/>并将其绑定JavaScrit操作,以提交表单。如有必要,原始提交按钮的名称和值的名称和值可以在隐藏的属性中。使用jQuery很容易,请允许我避免使用纯JavaScript版本。

假设这是原始形式:

<form method="post" id="myFavoriteForm>
   ...other fields...
   <input class="btn btn-primary" type="submit" name="login" value="Let me in" />
</form>

像这样更改它:

<form method="post" id="myFavoriteForm">
   ...other fields...
   <a href="#" class="btn btn-primary" id="myFavoriteFormSubmitButton">
      <i class="icon-user icon-white"></i>&nbsp;Let me in
   </a>
</form>

...然后是神奇的jQuery:

$("#myFavoriteFormSubmitButton").bind('click', function(event) {
   $("#myFavoriteForm").submit();
});

或者,如果您想确保用户始终可以提交表单(这就是我要穿的鞋子),则可以在表单中保留常规的提交按钮,并使用jQuery .hide()隐藏它。根据正常的提交按钮(有些人使用链接,w3m和类似的浏览器),它可以确保在没有JavaScript和jQuery的情况下仍然可以正常登录,但是如果可能的话,还可以提供带有图标的精美按钮。


如果您对此有任何想法,我请您回答我的这个问题。stackoverflow.com/questions/11295378/...
Krishnaprasad瓦玛

8

引导程序3有一种新的方法可以执行此操作:

<button type="button" class="btn btn-default btn-lg">
  <span class="glyphicon glyphicon-star"></span> Star
</button>

它位于引导字形页面上的“如何使用”下:


7

我想将Twitter Bootstrap图标转换为基本的Rails表单,并发现了这篇文章。经过一番搜索,我找到了一种简单的方法。不知道您是否正在使用Rails,但这是代码。关键是将一个块传递给link_to视图助手:

<tbody>
    <% @products.each do |product| %>
      <tr>
        <td><%= product.id %></td>
        <td><%= link_to product.name, product_path(product) %></td>
        <td><%= product.created_at %></td>
        <td>
          <%= link_to(edit_product_path(product), :class => 'btn btn-mini') do %>
          Edit <i class="icon-pencil"></i>
          <% end %>

          <%= link_to(product_path(product), :method => :delete, :confirm => 'Are you sure?', :class => 'btn btn-mini btn-danger') do %>
          Delete <i class="icon-trash icon-white"></i>
          <% end %>
        </td>
      </tr>
    <% end %>
  </tbody>
</table>

<%= link_to(new_product_path, :class => 'btn btn-primary') do %>
    New <i class="icon-plus icon-white"></i>
<% end %>

如果您不使用Rails,这是带有图标的链接的输出HTML(用于编辑,删除和新的提交按钮)

# Edit
<a href="/products/1/edit" class="btn btn-mini">Edit <i class="icon-pencil"></i></a>

# Delete
<a href="/products/1" class="btn btn-mini btn-danger" data-confirm="Are you sure?" data-method="delete" rel="nofollow"> Delete <i class="icon-trash icon-white"></i></a>

# New
<a href="/products/new" class="btn btn-primary">New <i class="icon-plus icon-white"></i></a>

这是完成结果的屏幕截图的链接:http : //grab.by/cVXm


2
那么,当搜索引擎抓取您的网站,看到一个名为“删除”的链接,决定“哦,我想我会遵循该链接”并开始与您的数据库搞混时,会发生什么?总是有人告诉我,出于这个原因,应该始终使用非GET操作来执行更改。
阿斯凡德·卡兹

大多数人都可能使用授权来删除链接。
Noz 2012年

2
由于OP并不是在询问Rails,因此成为话题。Rails在通过不引人注目的JavaScript集成这种超链接时确实使用了delete方法。如果有人直接请求该链接,则默认设置是显示该记录,而不是删除它。请参阅以下答案以获取更多详细信息:stackoverflow.com/a/2809412/252290
levous,2012年

这特别是关于提交按钮,而不是锚标记。
pixelearth

6

有一种方法可以使(引导程序的)字形图标进入input type="submit"。使用css3的多个背景。

HTML:

<form class="form-search"><input type="submit" value="Search">
</form>

和CSS:

.form-search input[type="submit"] {
    padding-left:16px; /* space for only one glyphicon */
    background:-moz-linear-gradient(top,#fff 0%,#eee 100%) no-repeat 16px top,
        url(../images/glyphicons-halflings.png) no-repeat -48px 0,
        -moz-linear-gradient(top,#fff 0%,#eee 100%); /* FF hack */
    /* another hacks here  */
    background:linear-gradient(to bottom,#fff 0%,#eee 100%) no-repeat 16px top,
        url(../images/glyphicons-halflings.png) no-repeat -48px 0,
        linear-gradient(to bottom,#fff 0%,#eee 100%); /* Standard way */
}

如果多个背景重叠,则顶部将是该background:符号的第一个背景。因此,顶部是16px从左侧缩进的背景(16px是单个字形图标的宽度),底部是完整的glyphicons-halflings.png,底部(覆盖整个元素)是与顶部相同的背景渐变。

-48px 0px是搜索图标(icon-search)的缩写,但很容易显示其他任何图标。

如果有人需要:hover效果,则必须再次以相同的形式键入背景


尽管这可能有效,但肯定不如使用<button type =“ submit”>那样优雅,并且将很难维护。
理查德

4

我可以解决这个问题,但有一些警告尚未解决。

无论如何,这是这样做的:

选择您的平均输入按钮:

<input type="submit" class="btn btn-success" value="Save">

从字形精灵图片文件中剪出想要用于提交按钮的图标,并确保它是14x14像素的图像。是的,在理想情况下,您可以重用Sprite,并且如果有人认为我会很高兴听到它是如何完成的。:-)

完成此操作后,您可以为输入按钮编写CSS,如下所示:

input[type='submit'] {
    background-image: url('../images/submit-icon.png'), #62C462; /* fallback color if gradients are not supported */
    background-image: url('../images/submit-icon.png'), -webkit-linear-gradient(top, #62C462, #51A351);
    background-image: url('../images/submit-icon.png'),    -moz-linear-gradient(top, #62C462, #51A351); /* For Fx 3.6 to Fx 15 */
    background-image: url('../images/submit-icon.png'),     -ms-linear-gradient(top, #62C462, #51A351); /* For IE 10 Platform Previews and Consumer Preview */
    background-image: url('../images/submit-icon.png'),      -o-linear-gradient(top, #62C462, #51A351); /* For Opera 11.1 to 12.0 */
    background-image: url('../images/submit-icon.png'),         linear-gradient(top, #62C462, #51A351); /* Standard syntax; must be the last statement */
    background-repeat: no-repeat;
    background-position: 5px 50%, 0cm 0cm;
    padding-left: 25px;
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}

input[type='submit']:hover {
    background-image: url('../images/submit-icon.png'), #51A351; /* fallback color if gradients are not supported */
    background-image: url('../images/submit-icon.png'), -webkit-linear-gradient(top, #51A351, #51A351);
    background-image: url('../images/submit-icon.png'),    -moz-linear-gradient(top, #51A351, #51A351); /* For Fx 3.6 to Fx 15 */
    background-image: url('../images/submit-icon.png'),     -ms-linear-gradient(top, #51A351, #51A351); /* For IE 10 Platform Previews and Consumer Preview */
    background-image: url('../images/submit-icon.png'),      -o-linear-gradient(top, #51A351, #51A351); /* For Opera 11.1 to 12.0 */
    background-image: url('../images/submit-icon.png'),         linear-gradient(top, #51A351, #51A351); /* Standard syntax; must be the last statement */
    background-position: 5px 50%, 0cm 0cm;
    padding-left: 25px;
}

适用于Firefox 14,Chrome 21

在IE 9中不起作用

tl; dr:只需一点CSS,您就可以自动在提交按钮上放置图标,但是您需要将图标放在单独的文件中,并且在Internet Explorer中将无法使用。


1

我认为这是解决您问题的方法

<input type="text" placeholder="search here" />
<button type="submit"><i class="glyphicon glyphicon-search"></button>

1

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://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="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  
    <button type="button" class="btn btn-info">
      <span class="glyphicon glyphicon-search"></span> Search
    </button>
  </p>
 
    <a href="#" class="btn btn-success btn-lg">
      <span class="glyphicon glyphicon-print"></span> Print 
    </a>
  </p> 
</div>

</body>
</html>


1
问题是关于提交
Grigory Kislin '17

这是引导程序3-有关引导程序2格式的问题,该格式使用另一种格式显示图标。
卡莱伦'17


-1

我想这更好的方法,对我来说很好。

<form name="myform">
<!-- form fields -->
   <a href="#" class="btn btn-success" onclick="document.myform.submit();">
     Submit <i class="icon-plus"></i>&nbsp; Icon
   </a>
</form>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.