Mon code HTML a une classe appelée .required
qui est affectée aux champs obligatoires.
Voici le 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"> </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>
J'ai ajouté ce qui suit à mon CSS;
.form-group .required .control-label:after {
content:"*";color:red;
}
Cela ne donne toujours pas un *
rouge autour des champs obligatoires. Qu'est-ce que j'oublie ici? N'y a-t-il pas un moyen direct dans Bootstrap 3 d'introduire *
dans les champs obligatoires?
Le *
dans les termes et conditions n'apparaît pas immédiatement dans une case à cocher. Comment régler ceci?
Utilisez .form-group.required
sans espace.
.form-group.required .control-label:after {
content:"*";
color:red;
}
Modifier:
Pour la case à cocher, vous pouvez utiliser la pseudo-classe: not (). Vous ajoutez le * requis après chaque étiquette sauf s'il s'agit d'une case à cocher
.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; }
Note: non testé
Vous devriez utiliser la classe .text ou la cibler sinon sinon, essayez ce code HTML:
<div class="form-group required"> <label class="col-md-2 control-label"> </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>
Ok troisième édition:
CSS retour à ce qui était
.form-group.required .control-label:after {
content:"*";
color:red;
}
HTML:
<div class="form-group required">
<label class="col-md-2"> </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>
En supposant que le HTML ressemble à cela
<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>
Pour afficher un astérisque à droite de l'étiquette:
.form-group.required .control-label:after {
color: #d00;
content: "*";
position: absolute;
margin-left: 8px;
top:7px;
}
Ou à gauche de l'étiquette:
.form-group.required .control-label:before{
color: red;
content: "*";
position: absolute;
margin-left: -15px;
}
Pour faire un beau gros astérisque rouge, vous pouvez ajouter ces lignes:
font-family: 'Glyphicons Halflings';
font-weight: normal;
font-size: 14px;
Ou si vous utilisez Font Awesome ajoutez ces lignes (et modifiez la ligne de contenu):
font-family: 'FontAwesome';
font-weight: normal;
font-size: 14px;
content: "\f069";
.form-group .required .control-label:after
devrait probablement être .form-group.required .control-label:after
. La suppression de l'espace entre .form-group et .required est le changement.
Les deux autres réponses sont correctes. Lorsque vous incluez des espaces dans vos sélecteurs CSS, vous ciblez des éléments enfants, par exemple:
.form-group .required {
styles
}
Cible un élément avec la classe de "requis" qui est à l'intérieur d'un élément avec la classe de "groupe de forme".
Sans cet espace, il cible un élément qui a tous les deux Des classes. 'required' et 'form-group'
Ce CSS a fonctionné pour moi:
.form-group.required.control-label:before{
color: red;
content: "*";
position: absolute;
margin-left: -10px;
}
et ce 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>