Bootstrap 3'te zorunlu alanlara yıldız işareti ekleme


166

HTML'mde bir sınıf var .required zorunlu alanlara atanmış .

İşte HTML:

<form action="/accounts/register/" method="post" role="form" class="form-horizontal">
    <input type='hidden' name='csrfmiddlewaretoken' value='brGfMU16YyyG2QEcpLqhb3Zh8AvkYkJt' />
    <div class="form-group required">
       <label class="col-md-2 control-label">Username</label>
       <div class="col-md-4">
         <input class="form-control" id="id_username" maxlength="30" name="username" placeholder="Username" required="required" title="" type="text" />
       </div>
    </div>
    <div class="form-group required"><label class="col-md-2 control-label">E-mail</label><div class="col-md-4"><input class="form-control" id="id_email" name="email" placeholder="E-mail" required="required" title="" type="email" /></div></div>
    <div class="form-group required"><label class="col-md-2 control-label">Password</label><div class="col-md-4"><input class="form-control" id="id_password1" name="password1" placeholder="Password" required="required" title="" type="password" /></div></div>
    <div class="form-group required"><label class="col-md-2 control-label">Password (again)</label><div class="col-md-4"><input class="form-control" id="id_password2" name="password2" placeholder="Password (again)" required="required" title="" type="password" /></div></div>
    <div class="form-group required"><label class="col-md-2 control-label">first name</label><div class="col-md-4"><input class="form-control" id="id_first_name" maxlength="30" name="first_name" placeholder="first name" required="required" title="" type="text" /></div></div>
    <div class="form-group required"><label class="col-md-2 control-label">last name</label><div class="col-md-4"><input class="form-control" id="id_last_name" maxlength="30" name="last_name" placeholder="last name" required="required" title="" type="text" /></div></div>
    <div class="form-group required"><label class="col-md-2 control-label">&#160;</label><div class="col-md-4"><div class="checkbox"><label><input class="" id="id_tos" name="tos" required="required" type="checkbox" /> I have read and agree to the Terms of Service</label></div></div></div>

    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
           <button type="submit" class="btn btn-primary">
              <span class="glyphicon glyphicon-star"></span> Sign Me Up!
           </button>
        </div>
    </div>
</form>

CSS'ime aşağıdakileri ekledim;

.form-group .required .control-label:after {
  content:"*";color:red;
}

Yine de bu *, zorunlu alanların etrafında kırmızı renk vermez . Burada ne eksik? Bootstrap 3'te tanıtmak için doğrudan bir yol yok mu* zorunlu alanlara mu?


DÜZENLE

*Şartlar ve koşullarda bir onay kutusu hemen görünmez. Bunu nasıl düzeltirim?

resim açıklamasını buraya girin


2
Lütfen cevaplanan soruyu işaretleyin.
LoveAndHappiness

Yanıtlar:


284

Boşluksuz kullanın .form-group.required.

.form-group.required .control-label:after {
  content:"*";
  color:red;
}

Düzenle:

Onay kutusu için sözde sınıfı kullanabilirsiniz: not (). Bir onay kutusu olmadıkça her etiketten sonra gerekli * eklersiniz

.form-group.required:not(.checkbox) .control-label:after, 
.form-group.required .text:after { /* change .text in whatever class of the text after the checkbox has */
   content:"*";
   color:red;
}

Not: test edilmedi

.Text sınıfını kullanmalı veya büyük olasılıkla hedeflemelisiniz, bu html'yi deneyin:

<div class="form-group required">
   <label class="col-md-2 control-label">&#160;</label>
   <div class="col-md-4">
      <div class="checkbox">
         <label class='text'> <!-- use this class -->
            <input class="" id="id_tos" name="tos" required="required" type="checkbox" /> I have read and agree to the Terms of Service
         </label>
      </div>
   </div>
</div>

Tamam üçüncü düzenleme:

CSS ne olduğuna geri dön

.form-group.required .control-label:after { 
   content:"*";
   color:red;
}

HTML:

<div class="form-group required">
   <label class="col-md-2">&#160;</label> <!-- remove class control-label -->
   <div class="col-md-4">
      <div class="checkbox">
         <label class='control-label'> <!-- use this class as the red * will be after control-label -->
            <input class="" id="id_tos" name="tos" required="required" type="checkbox" /> I have read and agree to the Terms of Service
         </label>
      </div>
   </div>
</div>

3
Düzenlenmiş olanı denedim, ama işe yaramadı. lütfen kontrol edebilir misin?
beyin fırtınası


1
Genel BS3 değil, özel CSS mi görünüyor? Bana da duyarlı görünüyor, bu yüzden belki (BS tema dosyanıza eklemek iyi olabilir bootstrap-theme.css).
Roland

Sözde sınıf ve sözde öğeleri ayırt etmek için kullanabilirsiniz ::after. Seviye 3 CSS spekülasyonu çıktı.
Niyongabo

73

HTML'nin böyle göründüğünü varsayarsak

<div class="form-group required">
   <label class="col-md-2 control-label">E-mail</label>
   <div class="col-md-4"><input class="form-control" id="id_email" name="email" placeholder="E-mail" required="required" title="" type="email" /></div>
</div>

Etiketin sağında yıldız işareti görüntülemek için:

.form-group.required .control-label:after { 
    color: #d00;
    content: "*";
    position: absolute;
    margin-left: 8px;
    top:7px;
}

Veya etiketin solunda:

.form-group.required .control-label:before{
   color: red;
   content: "*";
   position: absolute;
   margin-left: -15px;
}

Güzel bir büyük kırmızı yıldız yapmak için şu satırları ekleyebilirsiniz:

font-family: 'Glyphicons Halflings';
font-weight: normal;
font-size: 14px;

Veya Font Awesome kullanıyorsanız şu satırları ekleyin (ve içerik satırını değiştirin):

font-family: 'FontAwesome';
font-weight: normal;
font-size: 14px;
content: "\f069";

1
top:7px;etiket çok satırlıysa sorunlara neden olur. margin-top: -4px;Örneğin yerine koymak daha iyi olur .
sasha_gud

7

.form-group .required .control-label:aftermuhtemelen olmalı .form-group.required .control-label:after. .Form-group ile .required arasındaki boşluğun kaldırılması değişikliktir.


Teşekkürler! Ayrıca bootstrap 2.3 ile çalışır .control-group.required .control-label:after { content:"*"; color:red; }
edditor

4

Diğer iki cevap doğrudur. CSS seçicilerinize boşluk eklediğinizde alt öğeleri hedeflersiniz:

.form-group .required {
    styles
}

"Form" grubu sınıfındaki bir öğenin içinde bulunan "zorunlu" sınıfına sahip bir öğeyi hedefliyor.

Alan olmadan, her iki sınıfı da içeren bir öğeyi hedefler . 'zorunlu' ve 'form grubu'


Bu, orijinal sorunuzdan ayrı bir konudur. Ancak CSS'iniz tam olarak söylediklerinizi yapıyor. Yıldız işaretini, giriş alanına değil, etiket alanına (şartlar ve koşullarınız için boştur) koyuyor. Birlikte görünmelerini istiyorsanız, bunları HTML'de gruplamanız gerekir. Ama sonra boş olan boş bir etiket alanınız var. Etiketi sadece şartlar ve koşullar üzerine atıyorum ama onayları saklıyorum.
Corey

1

Bu CSS benim için çalıştı:

.form-group.required.control-label:before{
   color: red;
   content: "*";
   position: absolute;
   margin-left: -10px;
}

ve bu HTML:

<div class="form-group required control-label">
  <label for="emailField">Email</label>
  <input type="email" class="form-control" id="emailField" placeholder="Type Your Email Address Here" />
</div>

Div'de hem etiketi hem de girdiyi içeren kontrol etiketinin bulunması biraz garip.
devlin carnate
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.