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

답변:


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
편집 한 것을 시도했지만 작동하지 않았습니다. 확인해주세요
brain storm

CSS에서도 무언가 변경
Timvp

1
일반적인 BS3이 아닌 사용자 정의 CSS 인 것 같습니다. 나에게 반응하는 것처럼 보이므로 이것을 BS 테마 파일에 추가하는 것이 좋습니다 (예 :) bootstrap-theme.css.
Roland

의사 클래스와 의사 요소를 구별하기 위해을 사용할 수 있습니다 ::after. 레벨 3 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 사이의 공백을 제거하면 변경됩니다.


감사! 또한 부트 스트랩 2.3과 함께 작동 .control-group.required .control-label:after { content:"*"; color:red; }
edditor

4

다른 두 가지 대답이 맞습니다. CSS 선택기에 공백을 포함하면 하위 요소를 대상으로하는 것입니다.

.form-group .required {
    styles
}

"form-group"클래스를 가진 요소 안에있는 "필수"클래스를 가진 요소를 타겟팅하고 있습니다.

공간이 없으면 클래스 가 모두 있는 요소를 대상으로합니다 . '필수'및 '양식 그룹'


이것은 원래 질문과는 별개의 문제입니다. 그러나 CSS는 당신이 말한 것을 정확하게하고 있습니다. 별표는 입력 필드가 아닌 레이블 필드 (약관은 비어 있음)로 표시됩니다. 그것들이 함께 나타나게하려면 HTML로 그룹화해야합니다. 그러나 빈 레이블 필드가 잘못되었습니다. 이용 약관에 라벨을 남기고 유효성을 유지합니다.
Corey

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 carnate
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.