ChatGPT解决这个技术问题 Extra ChatGPT

在 twitter bootstrap 2 中添加图标以提交按钮

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

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>
我尝试这样做了一段时间,但没有成功。基本上,您不能在按钮的值中添加 html 元素。
@JohnGoodman 那应该是一个答案,而不是评论。接受的答案是一种解决方法,而不是对问题的直接答复。

K
KyleMit

您可以使用按钮标签而不是输入

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

这可行,但是请参阅 w3schools.com/tags/tag_button.asp,了解有关按钮标记的用途及其跨浏览器效果的更多信息。谨慎使用,尤其是表单。
我已经在 Chrome、Firefox、Safari(在 win7 上)和 IE8 中的
标记中作为提交按钮成功测试了这个
我使用这种方法遇到的唯一问题是,如果表单中还有其他按钮,那么在按下键盘上的 Enter 键时您的表单将不会提交,因为其他按钮之一将优先。任何已知的解决方法?
这正是我正在做的。但是,在我添加 <i> 标记后,图标没有出现。这非常令人抓狂,直到我发现我需要清除缓存。如果你遇到同样的问题,伙计们,点击 Ctrl+F5 清除缓存并刷新,然后看到辉煌的图标!
我需要添加 onClick="submit();"
K
KyleMit

我认为您可以为此目的使用标签标签。以下是 twitter 引导 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>

基本上你会得到一个输入的标签元素(type=submit),然后你隐藏实际的输入提交。用户可以单击标签元素,仍然可以完成表单提交。


这对我来说是两全其美。你得到你想要的风格,而不是使用链接或 javascript。
虽然这确实应用了样式并且看起来很棒,但当用户在输入字段中按下 enter 时,它会阻止提交表单。 (仅在 FF17 上测试)
显然对我来说是最好的解决方案。干杯!
K
KyleMit

我认为您应该尝试使用这个 FontAwesome,它旨在与 Twitter Bootstrap 一起使用。

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

B
Bill the Lizard

bootstrap 3有一种新方法可以做到这一点:

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

它位于“如何使用”下的 bootstrap glyphicons 页上:


B
Brett Sanders

我想将 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


那么,当搜索引擎抓取您的网站、看到一个名为“删除”的链接、决定“哦,我想我会关注该链接”并开始弄乱您的数据库时会发生什么?总是有人告诉我,出于这个原因,应该始终使用非 GET 操作执行更改。
他可能正在使用授权删除链接,大多数人都这样做。
题外话,因为 OP 并没有询问 Rails,但是……Rails 在通过不显眼的 javascript 集成这种超链接时确实使用了删除方法。如果有人直接请求该链接,则默认是显示该记录,而不是删除它。有关详细信息,请参阅此答案:stackoverflow.com/a/2809412/252290
这特别是关于提交按钮,而不是锚标记。
K
KyleMit

有一种方法,如何将(引导程序的)字形图标放入 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 效果,则必须以相同的形式再次键入 background


虽然这可能有效,但它肯定不如使用
M
Moeri

我得到了这个工作,但有一些警告我还没有解决。

无论如何,这就是它的完成方式:

拿你的平均输入按钮:

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

从 glyphicons sprite 文件中剪下您想要的提交按钮的图标,确保它是 14x14 像素的图像。是的,在理想情况下,您可以重用精灵,如果有人知道这一点,我会很高兴听到它是如何完成的。 :-)

一旦你这样做了,你可以为你的输入按钮编写 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 中不起作用。


M
MattAllegro

我认为它可以解决您的问题

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

G
Ganesh Putta

引导示例

打印


问题是关于提交
这是 bootstrap 3 - 问题是关于 bootstrap 2 格式的,它使用另一种格式来显示图标。
N
NimChimpsky

Use input-append with add-on classes

<div class="input-append">
  <input class="span2" id="appendedPrependedInput" type="text">
  <span class="add-on">.00</span>
</div>

L
Livia

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

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