Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2011, 13h05   #1
Invité de passage
 
Inscription : juin 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 11
Points : 3
Points : 3
Par défaut Afficher un div selon la valeur d'une checkbox

Bonjour à tous,

Je débute en JQuery et je suis confrontée à un problème qui me dépasse...

Dans un formulaire, j'ai plusieurs listes de checkboxs dont les valeurs proviennent d'une base de données et sont affichées via un script PHP. Chaque liste comprend la valeur "Autre" (inscrite dans la base de données avec l'id 150) qui permet d'afficher un div avec un input text pour préciser sa réponse.
A cette liste je rajoute également une checkbox nommée différemment, ayant la valeur "Aucune", qui me permet de désactiver en Jquery les checkbox précédentes.

Mon script de désactivation marche très bien mais pour ce qui est d'afficher mes divs, cela est très aléatoire. Il faut cliquez sur la checkbox "Aucune" pour qu'il fonctionne correctement.

J'ai également essayé l'exemple donné dans la FAQ JQuery mais je n'arrive pas vraiment à l'adapter et à détecter si ma valeur "150" figure dans la liste...


Voici ce que j'ai fait :

Code HTML
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
<form class="form" action="" method="post" name="step3">
<label>Quel(s) type(s) de vacances privilégiez-vous ?<br>
<i>(4 choix possibles)</i></label>
<?
//Interrogation de la BDD
$table = "type_vacances";
$item = liste($table,"id_type_vacances","id_type_vacances","");
if ($item != 0){
	foreach ($item as $item){
		$name = recup_intit ($item,$table,"id_type_vacances","intitule");
		echo "<input type='checkbox' name='type_vacances[]' id='type_vacances' onclick=\"mafonction(this.value);\" class='autre_cont_tp' value=".$item.">".$item.$name."<br>";
	}
		echo "<input type='checkbox' name='".$table."_supp_no' id='".$table."_supp_no' onclick=\"checkSelected('".$table."_supp_no')\" value='0'>Aucun<br>";
}
?>
 
 
 
<div id="autre_type_vac" style="display:none;">
<table width="80%" border="1">
	<tr>
		<td width="40%" class="cellule_t_right"><label>Précisez</label></td>
		<td class="cellule_t_left"><input type="text" name="autre_vacances" size="60"></td>
	</tr>
</table>
</div>
</form>

Le JS

La fonction checkSelected(htmlElement) est une fonction js qui me permet de gérer mes affichages conditionnels selon l'endroit du formulaire ou je me trouve (il est assez long et comporte pas mal de div).

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
function checkSelected(htmlElement)	{
var pro = document.getElementById(htmlElement).value;
 
//type de vacances (autre checkbox)
$(":checkbox[name='type_vacances[]']").click(function(){
	var objChecked = $("input[name='type_vacances[]']:checked"),
		n = objChecked.length,
		tab = [];
	for(var i = 0; i <= n; i++){
		if($(objChecked[i]).val() == "150"){
			$("#autre_type_vac").show("fast");
		}
		else{
			$("#autre_type_vac").hide();
		}
	}
});
 
//Aucun
var aucune_tp = $("input:checked[name='type_vacances_supp_no']").val();
if(aucune_tp == "0"){ $('.autre_cont_tp').attr('disabled', '');}else{ $('.autre_cont_tp').removeAttr('disabled');}
 
}

Si quelqu'un a une piste ou un lien pour me guider, je suis preneuse.

Un grand merci par avance.
Memelo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 13h11   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
Code :
foreach ($item as $item){
là y'a un souci ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/06/2011, 09h39   #3
Invité de passage
 
Inscription : juin 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 11
Points : 3
Points : 3
Bonjour et merci de ton aide.

J'ai modifié le code, c'est vrai que ce sera moins sujet à confusion.
Memelo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 18h52   #4
Invité de passage
 
Inscription : juin 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 11
Points : 3
Points : 3
Bonjour,
Enfin, j'ai pris le temps de replonger dans mon code...
Et l'erreur était toute bête... autant que j'ai presque honte de l'avouer...

En fait, ma fonction n'était pas dans le
Code :
$(document).ready(function(){
mais dans à l’intérieur d'une autre fonction javascript.... d'où le comportement capricieux de mon action !
Ça m'apprendra à mieux ranger mes affaires !!

Maintenant j'ai fait 2 fichiers deux scripts : 1 JS et 1 JQuery.

Merci
Memelo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h27.


 
 
 
 
Partenaires

Hébergement Web