Ajouter une modalité de réponse si la précédente est remplie

More
3 years 5 months ago #107857 by Remundo
Remundo created the topic: Ajouter une modalité de réponse si la précédente est remplie
Bonjour,
J'aimerais connaître un code tout simple me permettant d'ajouter automatiquement une modalité de réponse à une question si la modalité précédente est déjà remplie.

Voir pièce jointe pour l'exemple : n'afficher que "Etablissement 2" si "Etablissement 1" est renseigné.
L'idéal serait que le répondant puisse ajouter librement une modalité supplémentaire ou non à la question!

Ensuite à la question suivante, il doit choisir un établissement parmi celui ou ceux donnés dans la question ci-dessus.
Est-il possible avec un code du type {INSERTANSX11111X11111X111111SQ111} que cela fonctionne avec deux questions présentes dans le même groupe? Je sais que cela fonctionne avec un affichage question par question.

Merci.

Rémi Biscueil
Technicien en production et analyse de données
Service de l'évaluation, des études et du pilotage
15, Rue de l'Hôtel Dieu 86022 POITIERS Cedex
Attachments:

Please Log in to join the conversation.

More
3 years 5 months ago #107864 by DenisChenu
DenisChenu replied the topic: Ajouter une modalité de réponse si la précédente est remplie
Salut,

Workaround uniquement : manual.limesurvey.org/Workarounds:_Manip...ipt#Expandable_Array

Pour la 2èpe solution: ta version de LimeSurvey est encore ancienne, non ? Parceque'il me semble que sur la dernière ca marche quasi direct.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).
An error happen ? Before make a new topic : remind the Debug mode .

Please Log in to join the conversation.

More
3 years 5 months ago #107866 by Remundo
Remundo replied the topic: Ajouter une modalité de réponse si la précédente est remplie
Oui, c'est la version 1.91. Impossible pour nous de mettre à jour avant fin mai car nous utilisons des logiciels non compatibles avec les nouvelles versions pour nos enquêtes en cours.

Merci pour le code, c'est déjà mieux mais quelle partie du code dois-je modifier pour faire apparaître une seconde modalité uniquement si la première est remplie et non cochée ou cliquée?

<script type="text/javascript">

$(document).ready(function() {

// A function to show subsequent rows of an array as options are checked
function expandingArray(qID) {

// Build an array of the question rows
var arrayRow = '#question' + qID + ' table.question tbody tr';

// Initially hide all rows unless an input was previously checked
$( arrayRow ).each(function(i) {

if ( $( arrayRow + ':eq(' + i + ') input.radio:checked' ).length != 0 ) {
$(this).attr('name', 'clickedRow');
}
else {
$(this).attr('name', 'hidden').hide();
}
});

// Now show the first hidden row
addRow();

// Add another row when an option is checked for the first time
$( '#question' + qID + ' td.answer input.radio' ).click(function (event) {

if ($(this).parents('tr:eq(0)').attr('name') != 'clickedRow') {
addRow();
$(this).parents('tr:eq(0)').attr('name', 'clickedRow');
}

// The original function of the click event
checkconditions(this.value, this.name, this.type);
});

// Add another row when an table cell is clicked for the first time
$( '#question' + qID + ' table.question tbody td' ).click(function (event) {

if ($(this).parents('tr:eq(0)').attr('name') != 'clickedRow') {
addRow();
$(this).parents('tr:eq(0)').attr('name', 'clickedRow');
}
});

// Function to add a row
function addRow() {
$( arrayRow + '[name="hidden"]:first' ).attr('name', 'visible').show();
}
}

// Call the function with a question ID
expandingArray(QQ);

});
</script>

Rémi Biscueil
Technicien en production et analyse de données
Service de l'évaluation, des études et du pilotage
15, Rue de l'Hôtel Dieu 86022 POITIERS Cedex

Please Log in to join the conversation.

More
3 years 5 months ago #107902 by Remundo
Remundo replied the topic: Ajouter une modalité de réponse si la précédente est remplie
Denis, si tu peux m'aider là-dessus, sinon tant pis je laisse facultatif avec plusieurs champs affichés d'office.

Remundo wrote: Oui, c'est la version 1.91. Impossible pour nous de mettre à jour avant fin mai car nous utilisons des logiciels non compatibles avec les nouvelles versions pour nos enquêtes en cours.

Merci pour le code, c'est déjà mieux mais quelle partie du code dois-je modifier pour faire apparaître une seconde modalité uniquement si la première est remplie et non cochée ou cliquée?

<script type="text/javascript">

$(document).ready(function() {

// A function to show subsequent rows of an array as options are checked
function expandingArray(qID) {

// Build an array of the question rows
var arrayRow = '#question' + qID + ' table.question tbody tr';

// Initially hide all rows unless an input was previously checked
$( arrayRow ).each(function(i) {

if ( $( arrayRow + ':eq(' + i + ') input.radio:checked' ).length != 0 ) {
$(this).attr('name', 'clickedRow');
}
else {
$(this).attr('name', 'hidden').hide();
}
});

// Now show the first hidden row
addRow();

// Add another row when an option is checked for the first time
$( '#question' + qID + ' td.answer input.radio' ).click(function (event) {

if ($(this).parents('tr:eq(0)').attr('name') != 'clickedRow') {
addRow();
$(this).parents('tr:eq(0)').attr('name', 'clickedRow');
}

// The original function of the click event
checkconditions(this.value, this.name, this.type);
});

// Add another row when an table cell is clicked for the first time
$( '#question' + qID + ' table.question tbody td' ).click(function (event) {

if ($(this).parents('tr:eq(0)').attr('name') != 'clickedRow') {
addRow();
$(this).parents('tr:eq(0)').attr('name', 'clickedRow');
}
});

// Function to add a row
function addRow() {
$( arrayRow + '[name="hidden"]:first' ).attr('name', 'visible').show();
}
}

// Call the function with a question ID
expandingArray(QQ);

});
</script>


Rémi Biscueil
Technicien en production et analyse de données
Service de l'évaluation, des études et du pilotage
15, Rue de l'Hôtel Dieu 86022 POITIERS Cedex

Please Log in to join the conversation.

Moderators: Nickko

Start now!

Just create your account and start using Limesurvey today.

Register now