Welcome, Guest
Username: Password: Remember me

TOPIC: tableau : comment limiter le nombre de réponse par colonne ?

tableau : comment limiter le nombre de réponse par colonne ? 2 years 11 months ago #60128

  • franck
  • franck's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 5
  • Karma: 1
Bonjour

Je souhaite avoir une question de type tableau avec un jeu d'étiquette et des sous questions (type radio bouton) mais avec comme particularité d'avoir un 'quota', une limite par colonne.

Exemple si l'on a un tableau avec 10 questions sur la qualité, la personne ne peut pas mettre plus de 5 réponse sur une même colonne (la personne ne peut pas mettre partout mauvais ou partout parfais).
Est ce que cela est réalisable avec Lime et sinon comment puis-je faire ?

merci d'avance pour vos réponses
The administrator has disabled public write access.

Re: tableau : comment limiter le nombre de réponse par colonne ? 2 years 11 months ago #60135

  • Nickko
  • Nickko's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 1930
  • Thank you received: 218
  • Karma: 44
Sans beaucoup de JS je ne vois pas comment faire.
Nickko
Ergonome / Usability expert
The administrator has disabled public write access.

Re: tableau : comment limiter le nombre de réponse par colonne ? 2 years 11 months ago #60211

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 5854
  • Thank you received: 716
  • Karma: 222
Nickko wrote:
Sans beaucoup de JS je ne vois pas comment faire.
Exact, et pas mal de test/taf en plus :).

jquery est ton ami
The administrator has disabled public write access.

Re: tableau : comment limiter le nombre de réponse par colonne ? 2 years 11 months ago #60315

  • franck
  • franck's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 5
  • Karma: 1
Bonjour,
Tout d'abord merci pour vos réponses et votre forum.
J'ai cette adresse qui m'a fourni l'aide qu'il me fallait pour correctement intégrer mon code javascript :
docs.limesurvey.org/tiki-index.php?page=...ime+using+Javascript

Ensuite si cela peut intéresser voici mon code javascript. Je n'ai pas réussi à faire des boucles encapsulées en jquery, c'est pour cela que le code se répète à un endroit :
<pre class="codelisting" dir="ltr" style="overflow: auto;" id="codebox36">
 
<script type="text/javascript" charset="utf-8">
 
 $(document).ready(function() {   
 
 
/********************** SETTINGS **********************/
    // Le nombre minimum de reponse
    var minNumber = 6;
    // Le nombre maximum de reponse par colonne
    var maxNumberColums= 4;
    // Le text à faire apparaitre lorsque les conditions ne sont pas reunis
    var warningText = 'Veuillez répondre aux '+minNumber+' questions. Attention vous ne devez pas avoir plus de '+maxNumberColums+' réponses par colonne';
    // L'identification du questionnaire
    var questionId = 30;
 
 /******************************************************/
    // Creation de la zone 'warning' à placer près du bouton valider 'submit'
    var el = document.createElement('div'); 
    el.setAttribute('id','warning');
 
    document.body.appendChild(el);
 
    $( '#warning' ).css({ 
        'border':'1px solid #333333', 
        'width':'200px', 
        'padding':'3px', 
        'color':'red' 
    });
 
    $('#warning').html(warningText);
    $('input[type="submit"]').after($('#warning')); 
 
    // On détecte le nombre minimal de réponse
    var inputInitCount = 0; 
 
    $('#question' + questionId + ' input').each(function(i) { 
        if ($( this ).attr('checked') == true ) { 
            inputInitCount++; 
        } 
 
    }); 
 
    if (inputInitCount > (minNumber - 1)) { 
        $('input[type="submit"]').show(); 
        $('#warning').hide(); 
    } 
    else { 
        $('#warning').show(); 
        $('input[type="submit"]').hide(); 
    } 
    // Listener pour detecter le nombre de click 
    $('#question' + questionId + ' input').click(function() { 
		var inputCount = 0; 
		$('#question' + questionId + ' input').each(function(i) { 
            if ($( this ).attr('checked') == true ) { 
                inputCount++; 
            } 
        });
 
        // On control le max par colonne
	// la variable controle permet de gerer un tableau de 5 colonnes
		var control = [0,0,0,0,0];
		var cpt = 0;
		var bool = 0;
		$('#question' + questionId + ' table.question tbody tr').each(function(i) {   
			cpt= i+1;
			if  ($('input.radio:eq(0)', this).attr('checked')==true)
				{
					control[0]++;
					if (control[0]>maxNumberColums)
					{bool ++;}
				}
			if  ($('input.radio:eq(1)', this).attr('checked')==true)
				{
					control[1]++;
					if (control[1]>maxNumberColums)
					{bool ++;}
				}
		       // Repeter le code ci-dessus suivant le nombre de colonne en modifiant la valeur du tableau
        });   
 
		 if ((inputCount > (minNumber - 1))&&(bool==0)) { 
            $('input[type="submit"]').show(); 
            $('#warning').hide(); 
			} 
		else { 
			$('#warning').show(); 
			$('input[type="submit"]').hide(); 
			}
		// The original functions of the click event 
        checkconditions(this.value, this.name, this.type);
	});
 
 
 
    });    
</script></pre>

Si cela peut aider ...
The administrator has disabled public write access.

Re: tableau : comment limiter le nombre de réponse par colonne ? 2 years 11 months ago #60421

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 5854
  • Thank you received: 716
  • Karma: 222
franck wrote:
Bonjour,


Si cela peut aider ...
Super !

Merci !

Si tu as un peu de temps pour l'ajouter dans les workaround !
The administrator has disabled public write access.
Moderators: Nickko
Time to create page: 0.120 seconds
Donation Image