Comment le style de la mère de l'étiquette d'un contrôle de la radio d'entrée
J'ai besoin de styliser certains radio
entrées. J'ai essayé quelques solutions à partir d'ici, mais aucun n'a fonctionné pour moi. Quelqu'un peut-veuillez jeter un oeil à ce code et me dire ce que je peux faire?
C'est le HTML:
<div class="controls">
<table>
<tbody>
<tr>
<td>
<label class="radio">
<input type="radio" name="ad_caroserie" value="0">Berlina
</label>
</td>
<td>
<label class="radio">
<input type="radio" name="ad_caroserie" value="1">Break
</label>
</td>
<td>
<label class="radio">
<input type="radio" name="ad_caroserie" value="2">Cabrio
</label>
</td>
</tr>
</tbody>
</table>
</div>
Et le CSS:
label.radio {
background: #fcb608;
}
.radio input {
display: none;
}
label.radio input[type="radio"]:checked + label {
background: #000 !important;
border: 1px solid green;
padding: 2px 10px;
}
Le CSS ne pas avoir l'effet désiré; Pouvez-vous svp m'aider?
C'est des extraits de JS:
//If checkboxes or radio buttons, special treatment
else if (jQ('input[name="'+parentname+'"]').is(':radio') || jQ('input[name="'+parentname+'[]"]').is(':checkbox')) {
var find = false;
var allVals = [];
jQ("input:checked").each(function() {
for(var i = 0; i < parentvalues.length; i++) {
if (jQ(this).val() == parentvalues[i] && find == false) {
jQ('#adminForm #f'+child).show();
jQ('#adminForm #row_'+child).show();
find = true;
}
}
});
if (find == false) {
jQ('#adminForm #f'+child).hide();
jQ('#adminForm #row_'+child).hide();
//cleanup child field
if (jQ('#adminForm #f'+child).is(':checkbox') || jQ('#adminForm #f'+child).is(':radio')) {
jQ('#adminForm #f'+child).attr('checked', false);
}
else {
if (cleanValue == true) {
jQ('#adminForm #f'+child).val('');
}
}
}
}
else {
var find = false;
for(var i = 0; i < parentvalues.length; i++) {
if (jQ('#adminForm #f'+parentname).val() == parentvalues[i] && find == false) {
jQ('#adminForm #f'+child).show();
jQ('#adminForm #row_'+child).show();
find = true;
}
}
if(find == false) {
jQ('#adminForm #f'+child).hide();
jQ('#adminForm #row_'+child).hide();
//cleanup child field
if (jQ('#adminForm #f'+child).is(':checkbox') || jQ('#adminForm #f'+child).is(':radio')) {
jQ('#adminForm #f'+child).attr('checked', false);
}
else {
if (cleanValue == true) {
jQ('#adminForm #f'+child).val('');
}
}
}
}
}
function dependency(child,parentname,parentvalue) {
var parentvalues = parentvalue.split(",");
//if checkboxes
jQ('input[name="'+parentname+'[]"]').change(function() {
checkdependency(child,parentname,parentvalues,true);
//if checkboxes
jQ('input[name="'+child+'[]"]').change();
jQ('input[name="'+child+'"]').change();
jQ('#'+child).change();
});
//if buttons radio
jQ('input[name="'+parentname+'"]').change(function() {
checkdependency(child,parentname,parentvalues,true);
//if checkboxes
jQ('input[name="'+child+'[]"]').change();
jQ('input[name="'+child+'"]').change();
jQ('#'+child).change();
});
jQ('#f'+parentname).click(function() {
checkdependency(child,parentname,parentvalues,true);
//if checkboxes
jQ('input[name="'+child+'[]"]').change();
jQ('input[name="'+child+'"]').change();
jQ('#f'+child).change();
});
checkdependency(child,parentname,parentvalues,false);
}
- Devons-nous supposer que votre code HTML non valide est une erreur typographique, et tout à fait correct dans la production?
- Pas vraiment comprendre ce que u veux dire.L'étiquette est à l'intérieur d'une forme.
- Le
input
élément n'est pas un élément comme l'écrit; il sera interprété comme la plainetextContent
de lalabel
. - Et c'est une façon de changer le fond d'écran lorsque le bouton radio est coché?
- Il apparaît depuis votre exemple de code a été ajouté que le premier exemple HTML est inexacte en raison d'une simple faute de frappe, et devrait être corrigé.
- j'ai supprimer maintenant le premier code
Vous devez vous connecter pour publier un commentaire.
Une possibilité
Lors de mon temps de poster, je ne suis pas exactement sûr de ce que la mise en page souhaitée devrait être, mais il y a un problème spécifique à la tentative de CSS qui doit être abordée.
De la côté des frères et sœurs sélecteur:
Si le
<input>
est un enfant de la<label>
, il n'est pas adjacent, donc:est à la recherche d'un
label
immédiatement à la suite d'une:checked
input
à l'intérieur d'unlabel
avec la classe.radio
, et rien de tout cela n'existe.De modifier le style de la
label
dans ce cas, aurait besoin d'un sélecteur qui a affecté le parent, qui n'est actuellement pas possible.Donc, pour sélectionner le
label
de la:checked
input
, nous avons besoin de lalabel
à côté, pas le parent.Nous pouvons utiliser la
for="id"
l'attribut:Comme je l'ai dit, je ne suis pas exactement sûr de ce que la mise en page souhaitée devrait être, mais voici un exemple d'utilisation de la
for
attribut, qui n'a pas l'air trop mauvais.CSS:
HTML:
Avec
<input>
comme un enfant de<label>
L'aide d'un petit JavaScript gestionnaire l'écoute pour les changements à la
<form>
.change
est détecté, le déclenchée fonction vérifie si un<input type="radio">
a été changé, et si oui, si il a un<label>
comme sonparentElement
.<input type="radio">
qui est un enfant d'un<label>
élément avec laclass
.checked
.class
de la<label>
avant d'appliquer la mêmeclass
à la<label>
parent de l'<input>
target
qui a déclenché toute l'affaire.JS:
CSS:
HTML:
Sans JavaScript les choses deviennent difficiles (par mon explication de pourquoi il est préférable d'utiliser le
for
attribut dans ce cas).Nous pouvons utiliser la
apparence
de la propriété (avec des préfixes et la prise en charge raisonnable) pour mieux cacher le user-agentradio
GUI, puis utilisez le reste de l' sans visage élément de construire un fauxbackground
pour la<label>
.C'est très hacky et beaucoup moins dynamique que la valeur par défaut, puisque certains
absolute
le positionnement et les dimensions spécifiques sont nécessaires pour le retirer.Ce type de travaux (dans la plupart des navigateurs), mais est difficile à appliquer au niveau du site.
Quelque chose à jouer avec si 🙂
CSS:
HTML:
<form>
a chargé, et avant de l'utiliser, vous devriez être en mesure d'inclure le code à peu près partout. Il serait plus simple de l'ajouter dans un<script>
sous le<form>
, et assurez-vous que lequerySelector()
est suffisamment précis pour saisir la forme que vous souhaitez affecter. Pour de multiples formes, ou de faire ces changements à l'échelle du site, d'autres préoccupations viennent pour jouer; s'il vous plaît poster une autre question pour aider avec ces questions.Suffit d'utiliser jQuery avec une nouvelle classe css "sélectionné" quelque chose comme ceci:
sur start:
et onchange:
Après avoir essayé tant de fois avec du pur HTML et CSS. Je suis régler avec cette solution simple avec JavaScript. Je pense que cela va aider.
JS:
CSS:
HTML: