Welcome, Guest
Username: Password: Remember me

TOPIC: filtre de tableau sur option de réponse

filtre de tableau sur option de réponse 2 years 2 months ago #85182

  • loii
  • loii's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 11
  • Karma: 0
Bonjour,
A partir d'un tableau avec trois options de réponse ("je connais", "je connais de nom", "je en connais pas") et plusieurs sous questions, je cherche à faire un filtre de tableau qui ne m'affiche que les sous-questions de l'option de réponse 1 ("je connais").
Si je rentre dans le champ "filtre de tableau" le code de la question, limesurvey m'affiche en toute logique les sous-questions dès qu'une des trois options de réponse est cochée; j'ai tenté plein de solutions du type Qcode_A1 ou Qcode = "A1", etc. En vain.
Est-ce possible ? Quel serait donc la bonne écriture ?
Merci.
The administrator has disabled public write access.

Re: filtre de tableau sur option de réponse 2 years 2 months ago #85197

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 6551
  • Thank you received: 869
  • Karma: 257
Salut,

Je ne pense pas qu'il y ai de solution intégrée à LimeSurvey. Il est possible de masquer les lignes en javascript soit sur la même page soit sur des pages différentes.

Tes questions sont sur la même page ou une page différente ?

Denis
PS: peut être quelques idées ici : www.limesurvey.org/en/forum/can-i-do-thi...er-defined-condition
Last Edit: 2 years 2 months ago by DenisChenu.
The administrator has disabled public write access.

Re: filtre de tableau sur option de réponse 2 years 2 months ago #85214

  • loii
  • loii's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 11
  • Karma: 0
Merci Denis !
J'ai en effet abandonné la solution du filtre de tableau pour retenir l'idée du javascript que tu proposais. Après quelques heures de bidouilles (je suis vraiment pas à l'aise en js), j'ai réussit à sortir un code qui fonctionne mais qui est très capricieux ! Je n'arrive pas à comprendre pourquoi. Quand je clique sur un bouton radio de sous question de la question 1, il ne me fait pas apparaitre la sous-question équivalente de la question 2 à chaque coup... Une idée sur ce genre de comportements de js (ou jquery) susceptible ?
Le code :
<script type='text/javascript'>
$(document).ready(function() {
	$('#javatbd37367X90X2262S1').parent('.question').find('.radio').click(function(){
		var SubQ = $(this).attr("name").substr(-2);
		if(($(this).val() == "A1")||($(this).val() == "A2")){
			$("#"+"javatbd{SGQ}"+SubQ).hide();
			$("#answer{SGQ}"+SubQ).val("");
		}else{
			$("#"+"javatbd{SGQ}"+SubQ).show();
		}
	});
});
</script>
Merci !
Eloi
The administrator has disabled public write access.

Re: Personnaliser la page d'accueil en cas de suppression d'un questionnaire 2 years 2 months ago #85240

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 6551
  • Thank you received: 869
  • Karma: 257
Salut,

Si tu n'est pas à l'aise avec javascript, il vaut mieux utiliser directement les codes ... plutot que d'essayer de manipuler de façon plus élégantes.

Sinon, ici , tu ne test que le click mais pas le résultat du clic.
If ($(this).is(':checked'));
The administrator has disabled public write access.

Re: Personnaliser la page d'accueil en cas de suppression d'un questionnaire 2 years 2 months ago #85247

  • loii
  • loii's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 11
  • Karma: 0
bonjour,

je n'arrive toujours pas à résoudre mon soucis de code capricieux qui ne réagit pas à chaque clic.
Sinon, ici , tu ne test que le click mais pas le résultat du clic.
If ($(this).is(':checked'));
J'ai pas tout à fait saisi où il fallait mettre ce "If", je l'ai donc tenté à différents endroits, mais en vain.
Sinon l'objectif est de poser les deux tableaux sur la même page, d'où une modif du code proposé plus haut.
The administrator has disabled public write access.

Re: Personnaliser la page d'accueil en cas de suppression d'un questionnaire 2 years 2 months ago #85252

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 6551
  • Thank you received: 869
  • Karma: 257
Non, pas exactement, mais je n'ai pas repris l'ensemble.

Ici : tu test uniquement quelle case est cliqué, mais il faut aussi et surtout tester la case cochée.

Je verrais plutot:
$("#question2262 .question tbody input.radio").click(function(){
nom=$(this).name();
subq=nom.substr(-2);
// Trouve la case cochée
valcheck=$("input[name='"+nom+"']:checked).val();
if(valcheck="A1" || valcheck=="A2"){
			$("#javatbd{SGQ}"+SubQ).hide();
			$("#answer{SGQ}"+SubQ).val("");
}else{
			$("#javatbd{SGQ}"+SubQ).show();
}
});
The administrator has disabled public write access.

Re: Personnaliser la page d'accueil en cas de suppression d'un questionnaire 2 years 2 months ago #85263

  • loii
  • loii's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 11
  • Karma: 0
Okai,
cette fois-ci j'y suis. C'est pas de la dentelle mais ça fonctionne.
Le problème de "caprice" de js était une histoire de clic dans la case du bouton radio (limesurvey prenant en compte le clic dans la case mais hors bouton, et pas mon code).
Merci Denis. Je suis reparti de ton code plus conventionnel, y ai réglé le petit problème de clic pas pile-poile sur le bouton radio, et j'ai rajouté de quoi cacher la question 2, tant qu'elle n'a pas de sous-question à afficher.
Voici donc le code final :
<script type='text/javascript'>
$(document).ready(function() {
	$("#question{self.qid}").hide();
	$("#question{self.qid} tbody tr tbody").hide();
	$("#question2262 .question tbody td").click(function(){ // numero de la question du tableau 1 a renseigner
		nom=$(this).find("input.radio").attr("name");
		subq=nom.substr(-3); // les sous-questions doivent etre a 3 caracteres (ex:S01), identiques sur les 2 tableaux
		valcheck=$(this).find("input.radio").val();
		if(valcheck == "A1" || valcheck == "A2"){ // renseigner les codes des options de reponse validant la question a destination du tableau 2
			$("#question{self.qid}:hidden").show();
			$("#javatbd{SGQ}"+subq).show();
		}else{
			$("#javatbd{SGQ}"+subq).hide();
			$("#answer{SGQ}"+subq).val("");
		}
	});
});
</script>
The administrator has disabled public write access.

Re: Personnaliser la page d'accueil en cas de suppression d'un questionnaire 2 years 2 months ago #85274

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 6551
  • Thank you received: 869
  • Karma: 257
Salut,

Ah oui, le clic sur la cellule du tableau à prendre en compte :).
Ca marche si la personne clic 2 fois sur la case ?
Plutot que
valcheck=$(this).find("input.radio").val();

Je verrais plutôt
valcheck=$(this).closest('tr').find("input.radio:checked").val();

Non ?
The administrator has disabled public write access.

Re: Personnaliser la page d'accueil en cas de suppression d'un questionnaire 2 years 2 months ago #85281

  • loii
  • loii's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 11
  • Karma: 0
Yes !
valcheck=$(this).closest('tr').find("input.radio:checked").val();
fonctionne et est plus propre (closest, je ne connaissais pas, belle découverte !)
Concernant les 2 clics, oui, ça fonctionnait. Le premier prenait en compte le bouton checked précédent donc le second fonctionnait (il avait un clic de retard en quelques sortes...)
Merci !
Je remets le code avec la petite modif, si ça peut en intéresser d'autres...
<script type='text/javascript'>
$(document).ready(function() {
	$("#question{self.qid}").hide();
	$("#question{self.qid} tbody tr tbody").hide();
	$("#question2262 .question tbody td").click(function(){ // numero de la question du tableau 1 a renseigner
		nom=$(this).find("input.radio").attr("name");
		subq=nom.substr(-3); // les sous-questions doivent etre a 3 caracteres (ex:S01), identiques sur les 2 tableaux
		valcheck=$(this).closest('tr').find("input.radio:checked").val();
		if(valcheck == "A1" || valcheck == "A2"){ // renseigner les codes des options de reponse validant la question a destination du tableau 2
			$("#question{self.qid}:hidden").show();
			$("#javatbd{SGQ}"+subq).show();
		}else{
			$("#javatbd{SGQ}"+subq).hide();
			$("#answer{SGQ}"+subq).val("");
		}
	});
});
</script>
The administrator has disabled public write access.
Moderators: Nickko
Time to create page: 0.357 seconds
Donation Image