Twitter bootstrap 2 düğmesine göndermek için simge ekle


227

Form girişi gönderme düğmelerimde twitter bootstrap simgelerini kullanmak istiyorum.

Http://twitter.github.com/bootstrap/base-css.html#icons'taki örnekler ağırlıklı olarak stilli köprüleri gösterir.

Geldiğim en yakın simge, düğmenin yanında görüntülenen simgeyi almak, ancak içeride değil.

<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
Bunu bir süre başarı ile yapmaya çalıştım. Temel olarak, bir düğmenin değerine html öğeleri ekleyemezsiniz.
John Goodman

@JohnGoodman Bu bir cevap olmalı, yorum değil. Kabul edilen cevap, soruna doğrudan bir cevap değil, bir çözümdür.
cartbeforehorse

Yanıtlar:


395

Giriş yerine bir düğme etiketi kullanabilirsiniz

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

12
Bu işe yarar , ancak düğme etiketinin ne anlama geldiği ve tarayıcılar arası etkisi hakkında daha fazla bilgi için lütfen w3schools.com/tags/tag_button.asp adresine bakın . Bunu özellikle formlarda dikkatli kullanın.
Matenia Rossides

10
Bunu başarılı bir şekilde gönderme düğmesi olarak bir <form> etiketi içinde Chrome, Firefox, Safari (win7'de) ve IE8'de test ettim
Bay Bell

4
Bu yaklaşımla ilgili tek sorunum, formda başka düğmeler varsa, diğer düğmelerden biri öncelikli olacağından, formunuz klavyedeki enter tuşuna basıldığında gönderilmez. Bilinen herhangi bir geçici çözüm var mı?
Jeshurun

2
Ben de tam olarak bunu yapıyordum. Ancak, <i>etikete ekledikten sonra simge görünmedi . Önbelleği temizlemem gerektiğini fark edene kadar son derece sinir bozucuydu. Aynı sorunla karşılaşırsanız, millet, Ctrl+F5önbelleği temizlemek ve yenilemek için vurmak ve görkemli simgesini görmek!
Aditya MP

2
onClick="submit();"
Eklemem

67

Bu amaçla etiket etiketlerini kullanabileceğinizi düşünüyorum. İşte twitter bootstrap HTML navbar örneği:

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

Temel olarak girdi için bir etiket öğesi alırsınız (type = Submit) ve ardından gerçek girdi sunumunu gizlersiniz. Kullanıcılar etiket öğesini tıklayabilir ve yine de form gönderme işlemini gerçekleştirebilir.


9
Bu benim için her iki dünyanın en iyisi. İstediğiniz stili alırsınız ve bir bağlantı veya javascript kullanmazsınız.
AaronLS

1
Bu, stili uygularken ve harika görünüyor olsa da, kullanıcı giriş alanına girdiğinde düğmesine basıldığında formun gönderilmesini durdurur. (Yalnızca FF17'de test edildi)
Richard

1
Açıkçası benim için en iyi çözüm. Şerefe!
Armel Larcier

14

Twitter Bootstrap ile kullanılmak üzere tasarlanmış bu FontAwesome'i denemeniz gerektiğini düşünüyorum .

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

11

Simgeyi bir yere bir <a/> ekleyebilir ve ona form gönderen bir JavaScrit eylemi ekleyebilirsiniz. Gerekirse, orijinal gönderme düğmesinin adı + değerinin adı ve değeri gizli bir öznitelikte bulunabilir. JQuery ile kolay, lütfen saf JavaScript sürümünden kaçınmama izin verin.

Bunun orijinal form olduğunu varsayalım:

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

Bu şekilde değiştirin:

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

... ve sonra büyülü jQuery:

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

Veya kullanıcının formu her zaman gönderebildiğinden emin olmak istiyorsanız - bu, ayakkabılarınızda yapacağım şeydir - normal gönderme düğmesini formda bırakabilir ve jQuery .hide () ile gizleyebilirsiniz. Girişin normal gönderme düğmesine göre JavaScript ve jQuery olmadan da çalışmasını sağlar (bağlantıları, w3m ve benzeri tarayıcıları kullanan kişiler vardır), ancak mümkünse simgesiyle süslü bir düğme sağlar.


Bu konuda bir fikriniz varsa bu soruyu cevaplamanızı istiyorum. stackoverflow.com/questions/11295378/…
Krishnaprasad Varma

8

Bootstrap 3 ile bunu yapmanın yeni bir yolu var:

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

Başladı önyükleme glyphicons "nasıl kullanmak" altında sayfanın:


7

Twitter Bootstrap simgelerini temel bir Rails formuna istedim ve bu yazıyla karşılaştım. Biraz araştırdıktan sonra bunu yapmanın kolay bir yolunu buldum. Rails kullandığınızdan emin değilsiniz, ancak işte kod. Anahtar, link_to görünüm yardımcısına bir blok geçirmekti:

<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 kullanmıyorsanız, simgelere sahip bağlantılar için bir düzenleme HTML'si (düzenleme, silme ve yeni gönderme düğmeleri için)

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

Ve işte biten sonucun ekran görüntüsüne bir bağlantı: http://grab.by/cVXm


2
Peki, bir arama motoru sitenizi tarar, 'Sil' adlı bir bağlantı görür, "Ah, sanırım bu bağlantıyı takip edeceğim" ve veritabanınızla uğraşmaya başlarsa ne olur? Her zaman bana bu nedenle GET dışı operasyonlarla değişiklik yapılması gerektiği söylendi.
Asfand Qazi

Muhtemelen silme bağlantıları için yetkilendirme kullanıyor, çoğu insan yapıyor.
Noz

2
OP konu raylar hakkında sormak değildi ama ... Rails gerçekten bu tür bir köprü göze çarpmayan javascript ile entegre ederken bir silme yöntemi kullanır. Birisi bu bağlantıyı doğrudan talep ederse, varsayılan kayıt silmek değil, o kaydı sunmak olacaktır. Daha fazla ayrıntı için bu cevaba bakınız: stackoverflow.com/a/2809412/252290
levous

Bu özellikle bir tutturma etiketi değil, bir gönderme düğmesi ile ilgilidir.
piksel

6

Glifikonları (bootstrap) glifonlarına nasıl sokmanın bir yolu vardır input type="submit". Css3 çoklu arka plan kullanma.

HTML:

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

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

Birden çok arka plan çakışıyorsa, üst kısımda background:gösterimin ilk arka planı olacaktır . Bu yüzden üstte 16pxsol taraftan girintili arka plan ( 16pxtek glifik genişliğidir), alt seviyede bütün glyphicons-halflings.pngve alt seviyede (tüm elemanı kapsar) üst seviyedeki ile aynı arka plan gradyanıdır.

-48px 0pxarama simgesi ( icon-search) için kesmedir, ancak başka herhangi bir simgeyi göstermek kolaydır.

Birisi bir :hoveretkiye ihtiyaç duyarsa, arka plan tekrar aynı biçimde yazılmalıdır.


Bu işe yarayabilir olsa da, kesinlikle <button type = "gönder"> kullanmak kadar zarif değildir ve bakımı daha zor olacaktır.
Richard

4

Bu işe yaradı, ama henüz çözemediğim birkaç uyarı var.

Her neyse, işte böyle yapılır:

Ortalama giriş düğmenizi alın:

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

Gönderme düğmeleriniz için istediğiniz simgeyi glifonlar hareketli grafik dosyasından kesin, 14x14 piksel boyutunda bir resim olduğundan emin olun. Evet, ideal koşullarda sprite'ı tekrar kullanabilirsiniz ve eğer birisi bunu anlarsa, nasıl yapıldığını duymaktan mutluluk duyarım. :-)

Bunu yaptıktan sonra, giriş düğmeniz için şu şekilde css yazabilirsiniz:

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'de çalışır

IE 9'da çalışmıyor

tl; dr: Biraz css ile gönderme düğmelerinize otomatik olarak simgeler koyabilirsiniz, ancak simgeyi ayrı bir dosyaya koymanız gerekir ve Internet Explorer'da çalışmaz.


1

Bence bu senin sorunun için bir çözüm

<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
Soru yaklaşık edildi göndermek
Grigory Kislin

Bu bootstrap 3 - soru, simgeleri görüntülemek için başka bir format kullanan bootstrap 2 formatı ile ilgiliydi.
Calaelen


-1

Sanırım bu daha iyi bir yol, benim için iyi çalışıyor.

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.