在Bootstrap 3的必填字段中添加星号


166

我的HTML有一个称为的类.required,该类分配给必填字段。

这是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中添加了以下内容;

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

仍然不能*在必填字段周围显示红色。我在这里想念什么?Bootstrap 3中没有直接方法介绍*必填字段吗?


编辑

*在条款和条件不会立即出现一个复选框。如何解决这个问题?

在此处输入图片说明


2
请标记回答的问题。
LoveAndHappiness

Answers:


283

使用时.form-group.required没有空间。

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

编辑:

对于复选框,您可以使用伪类:not()。除非是复选框,否则在每个标签后添加必填*

.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;
}

注意:未测试

您应该使用.text类或以其他方式定位它,请尝试以下html:

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

确定第三次编辑:

CSS回到原来的样子

.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
我尝试了修改后的版本,但是没有用。你能检查一下吗?
头脑风暴

更改内容,也在CSS中
Timvp 2014年

1
似乎不是通用的BS3,而是自定义CSS?它对我也很敏感,因此可以将其添加(例如,添加到您的BS主题文件中bootstrap-theme.css)。
罗兰

要区分伪类和伪元素,可以使用::after3级CSS推测已经出炉了。
Niyongabo

73

假设这是HTML的样子

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

要在标签的右侧显示一个星号:

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

或标签左侧:

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

要制作一个漂亮的大红色星号,可以添加以下行:

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

或者,如果您使用的是Font Awesome,请添加以下行(并更改内容行):

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

1
top:7px;如果标签是多行,将导致问题。最好用margin-top: -4px;例如替换它。
sasha_gud

7

.form-group .required .control-label:after应该是.form-group.required .control-label:after。更改是.form-group和.required之间的空格。


谢谢!也适用于带有.control-group.required .control-label:after { content:"*"; color:red; }
edditor的

4

其他两个答案是正确的。当您在CSS选择器中包含空格时,您将定位子元素,因此:

.form-group .required {
    styles
}

定位“ form-group”类元素内部的“ required”类元素。

如果没有空格,它将针对同时具有两个类的元素。“必需”和“形式组”


这是与原始问题不同的问题。但是您的CSS确实正在执行您要告诉的内容。它在星号上加上标签字段(对于您的条款而言,该字段为空白),而不是输入字段。如果希望它们一起出现,则必须在HTML中将它们分组在一起。但是,然后您有一个空白标签字段,这是不好的。我只是放弃条款和条件上的标签,但保留验证。
科里2014年

1

该CSS为我工作:

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

和这个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上同时包含标签和输入的control-label有点奇怪。
devlin康乃馨
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.