J'ai une case à cocher et sous la case à cocher une zone div, où je veux afficher une liste déroulante et une autre case à cocher. Cette zone que je veux juste montrer quand la première case est cochée.
Je l'ai déjà essayé avec style.display et cela fonctionne à moitié. Je peux afficher la deuxième zone lorsque je coche la case, mais si je décoche, elle ne se cache plus. Idem si j'essaye avec jquery (publié les deux)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="tpe" value="tpe" onchange="functpe()">
<label class="form-check-label" for="tpe">tpe</label>
</div>
<div id="doing" style="display:none">
<div class="form-group">
<label for="exampleFormControlSelect1">Example select</label>
<select class="form-control" id="tpe" style="width: 170px;">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="n1" value="n1">
<label class="form-check-label" for="n1">n1</label>
</div>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="n2" value="n2" checked>
<label class="form-check-label" for="n2">n2</label>
</div>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="n3" value="n3" checked>
<label class="form-check-label" for="n3">n3</label>
</div>
</div>
//function F2
function functpe() {
var tpe = document.getElementById("tpe");
if (tpe.checked == true) {
document.getElementById("doing").style.display = "block";
} else {
document.getElementById("doing").style.display = "none";
}
}
function functpe() {
var tpe = $("#doing");
if (tpe.checked == true) {
$("#doing").css({
"display": "block"
});
} else {
$("#doing").css({
"display": "block"
});
}
}
J'espère que quelqu'un a une idée pour moi
5 Réponses :
Utilisez la méthode toggle fournie par l'API jQuery
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <label for="hide">Hide</label> <input id="hide" type="checkbox" checked/> <p id="post">Now you see me</p>
$('#hide').on('click', function(e) {
$('#post').toggle();
});
essayez comme ça avec JQuery Toggle
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox initialOne" type="checkbox" id="tpe" value="tpe">
<label class="form-check-label" for="tpe">tpe</label>
</div>
<div id="doing" style="display:none">
<div class="form-group">
<label for="exampleFormControlSelect1">Example select</label>
<select class="form-control" id="tpe" style="width: 170px;">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="n1" value="n1">
<label class="form-check-label" for="n1">n1</label>
</div>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="n2" value="n2" checked>
<label class="form-check-label" for="n2">n2</label>
</div>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="n3" value="n3" checked>
<label class="form-check-label" for="n3">n3</label>
</div>
</div>
$('.initialOne').change(function() {
$('#doing').slideToggle();
})
veuillez vérifier le code ci-dessous pour basculer (afficher / masquer) div lorsque vous cliquez sur la case à cocher.
<div id="autoUpdate" class="autoUpdate">
content
</div>
<script>
$(document).ready(function(){
$('#checkbox1').change(function(){
$('#autoUpdate').toggle()
});
});
Je viens d'essayer votre code et il semble fonctionner correctement:
https://jsfiddle.net/ h8nfx4g2 /
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="tpe" value="tpe" onchange="functpe()">
<label class="form-check-label" for="tpe">tpe</label>
</div>
<div id="doing" style="display:none">
<div class="form-group">
<label for="exampleFormControlSelect1">Example select</label>
<select class="form-control" id="tpe" style="width: 170px;">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="n1" value="n1">
<label class="form-check-label" for="n1">n1</label>
</div>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="n2" value="n2" checked>
<label class="form-check-label" for="n2">n2</label>
</div>
<div class="form-check form-check-inline" style="font-size:20px">
<input class="form-check-input big-checkbox" type="checkbox" id="n3" value="n3" checked>
<label class="form-check-label" for="n3">n3</label>
</div>
</div>
<script>
function functpe() {
var tpe = document.getElementById("tpe");
if (tpe.checked == true) {
document.getElementById("doing").style.display = "block";
} else {
document.getElementById("doing").style.display = "none";
}
}
</script>
Veuillez confirmer si vous rencontrez des erreurs dans la console?
Vous pouvez le faire uniquement avec du CSS. Il vous suffit de modifier un peu l'ordre pour faire de #doing un frère de la case à cocher;)
Voici un exemple
.doing {
display: none;
}
input[type=checkbox]:checked ~ .doing {
display: block;
}
Très bonne réponse! J'édite l'exemple de texte en ligne pour utiliser du CSS pur pour éviter tout besoin de traitement SASS. Le lien d'exemple Codepen.io utilise toujours SASS, si vous avez / voulez cela.
Comme vous avez marqué cette jquery:
$ ("# doing"). Show (tpe.checked);Comment déclenchez-vous
functpe ()? Avez-vous vérifié la valeur detpe.checked(console / alert / debug-step)? Est-ce toujoursvrai?J'ai trouvé votre code dans l'édition - il fallait juste que la première ligne soit indentée avec 4 espaces ou plus.
Copie possible de jQuery Show-Hide DIV en fonction de la valeur de la case à cocher et Jquery Afficher / Masquer en fonction de l'état de la case à cocher et Comment afficher / masquer un élément dans les états cochés / non cochés à l'aide de jQuery? et Afficher / masquer avec la case à cocher à l'aide de jQuery et afficher / masquer l'objet en fonction de la sélection de la case à cocher