- Posts: 10634
- Thank you received: 3698
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Using previous Array question responses to set following Array subquestions
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
12 years 9 months ago #62555
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Using previous Array question responses to set following Array subquestions
It seems that with all of the edits a couple of spaces were dropped and a couple of extra single quotes were inserted.
Use this:
Use this:
Code:
<script type="text/javascript" charset="utf-8"> $(document).ready(function() { // Call the function // Params - Q1 ID, Q2 ID, Hidden question ID countChecked(751, 756, 761); function countChecked(q1ID, q2ID, qHiddenID) { // Hide the hidden question $('#question'+qHiddenID+'').hide(); // Find the survey and group IDs if($('input#fieldnames').length != 0) { var fieldNames = $('input#fieldnames').attr('value'); var tmp = fieldNames.split('X'); var sID = tmp[0]; var gID = tmp[1]; } // A listener on the 1st column of Q1 radio buttons $('#question'+q1ID+' td.answer_cell_00A1').click(function () { // Uncheck the corresponding option in the hidden question var rowID = $(this).parents('tbody:eq(0)').attr('id'); var tmp2 = rowID.split('X'+q1ID); var answerCode = tmp2[1]; $('#answer'+sID+'X'+gID+'X'+qHiddenID+answerCode).attr('checked', false); // Fire the conditions function to hide the corresponding row in Q2 var hiddenInputValue = $('#answer'+sID+'X'+gID+'X'+qHiddenID+answerCode).attr('value'); var hiddenInputName = $('#answer'+sID+'X'+gID+'X'+qHiddenID+answerCode).attr('name'); var hiddenInputType = $('#answer'+sID+'X'+gID+'X'+qHiddenID+answerCode).attr('type'); checkconditions(hiddenInputValue, hiddenInputName, hiddenInputType) }); // A listener on the 2nd and 3rd columns of Q1 radio buttons $('#question'+q1ID+' td.answer_cell_00A2, #question'+q1ID+' td.answer_cell_00A3').click(function () { // Check the corresponding option in the hidden question var rowID = $(this).parents('tbody:eq(0)').attr('id'); var tmp2 = rowID.split('X'+q1ID); var answerCode = tmp2[1]; $('#answer'+sID+'X'+gID+'X'+qHiddenID+answerCode).attr('checked', true); // Fire the conditions function to show the corresponding row in Q2 var hiddenInputValue = $('#answer'+sID+'X'+gID+'X'+qHiddenID+answerCode).attr('value'); var hiddenInputName = $('#answer'+sID+'X'+gID+'X'+qHiddenID+answerCode).attr('name'); var hiddenInputType = $('#answer'+sID+'X'+gID+'X'+qHiddenID+answerCode).attr('type'); checkconditions(hiddenInputValue, hiddenInputName, hiddenInputType) }); } }); </script>
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- MaLu
- Offline
- New Member
Less
More
- Posts: 14
- Thank you received: 0
12 years 9 months ago #62558
by MaLu
Replied by MaLu on topic Aw: Re: Using previous Array question responses to set following Array subquestions
Thank you so much!! Highly appreciate your support!!
It works perfectly and looks good. I try to modify that example fitting my initial question. Hopefully, I can leave you alone
It works perfectly and looks good. I try to modify that example fitting my initial question. Hopefully, I can leave you alone
The topic has been locked.
- claudio123
- Offline
- New Member
Less
More
- Posts: 2
- Thank you received: 0
12 years 9 months ago #62655
by claudio123
... lost in brackets ...
(I suggest a preview option for posting in the forum)
Replied by claudio123 on topic Using previous Array question responses to set following Array subquestions
Hello,
attached you can find an example Tony helped me to make run. My mistake was that I had the question ID of the hidden question in the array filter box of question2, not the question code.
After correcting this the mini survey is corrected now and can be downloaded to be used as an example.
Thanks again Tony!
best regards
Claudio
attached you can find an example Tony helped me to make run. My mistake was that I had the question ID of the hidden question in the array filter box of question2, not the question code.
After correcting this the mini survey is corrected now and can be downloaded to be used as an example.
Thanks again Tony!
best regards
Claudio
... lost in brackets ...
(I suggest a preview option for posting in the forum)
Attachments:
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10634
- Thank you received: 3698
12 years 9 months ago #62668
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Using previous Array question responses to set following Array subquestions
No problem Claudio.
It should be noted that if you download and import the survey, the question IDs will be different (they get changed in during the import process). You will need to modify this line with the new IDs for Q1, Q2 and the hidden question:
It should be noted that if you download and import the survey, the question IDs will be different (they get changed in during the import process). You will need to modify this line with the new IDs for Q1, Q2 and the hidden question:
Code:
countChecked(141, 146, 151);
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- claudio123
- Offline
- New Member
Less
More
- Posts: 2
- Thank you received: 0
12 years 9 months ago - 12 years 9 months ago #62678
by claudio123
... lost in brackets ...
(I suggest a preview option for posting in the forum)
Replied by claudio123 on topic Using previous Array question responses to set following Array subquestions
Tony,
do the question IDs always change when newly imported?
This is quite annoying and makes things quite complicated, I think.
Thanks
c.
do the question IDs always change when newly imported?
This is quite annoying and makes things quite complicated, I think.
Thanks
c.
... lost in brackets ...
(I suggest a preview option for posting in the forum)
Last edit: 12 years 9 months ago by claudio123.
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10634
- Thank you received: 3698
12 years 9 months ago #62681
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Using previous Array question responses to set following Array subquestions
Yes, this is always the case. LS needs to generate new group and question IDs because you may already have those IDs in your database from other surveys.
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- MaLu
- Offline
- New Member
Less
More
- Posts: 14
- Thank you received: 0
12 years 9 months ago #62684
by MaLu
Replied by MaLu on topic Using previous Array question responses to set following Array subquestions
Hi again!
Your help is excellent and highly appreciated. Now I have a slightly different question/problem...
In another question, I'd like to use previous answers to limit subsequent answering options, however, not appearing as a row but as a column. Is that possible as well? Or do you know a workaround for that as well?
Attached you can find a screenshot that might clarify my question…
Thanks a lot!
Marie
Your help is excellent and highly appreciated. Now I have a slightly different question/problem...
In another question, I'd like to use previous answers to limit subsequent answering options, however, not appearing as a row but as a column. Is that possible as well? Or do you know a workaround for that as well?
Attached you can find a screenshot that might clarify my question…
Thanks a lot!
Marie
Attachments:
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10634
- Thank you received: 3698
12 years 9 months ago #62700
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Using previous Array question responses to set following Array subquestions
Hmm, tricky, I'll have to give that some thought. Can you attach a short sample survey for me to test?
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- MaLu
- Offline
- New Member
Less
More
- Posts: 14
- Thank you received: 0
12 years 9 months ago #62712
by MaLu
Replied by MaLu on topic Using previous Array question responses to set following Array subquestions
Hi Tony,
I activated the test survey I'm using.
www.panel.statista.com/befragung/admin/a...oup&sid=64137&gid=38
survey ID 64137
Question group ID 38
Is that what you're asking for?
Unfortunately, it's in German. In case of any language barrier, let me know, I’ll try to get an English version…
Salut,
Marie
I activated the test survey I'm using.
www.panel.statista.com/befragung/admin/a...oup&sid=64137&gid=38
survey ID 64137
Question group ID 38
Is that what you're asking for?
Unfortunately, it's in German. In case of any language barrier, let me know, I’ll try to get an English version…
Salut,
Marie
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10634
- Thank you received: 3698
12 years 9 months ago #62730
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Using previous Array question responses to set following Array subquestions
That survey requires logging in. It would be easier if you could attach an export of a sample survey. That way I wouldn't need to create a survey to test.
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- MaLu
- Offline
- New Member
Less
More
- Posts: 14
- Thank you received: 0
12 years 9 months ago #62733
by MaLu
Replied by MaLu on topic Using previous Array question responses to set following Array subquestions
Ah ok, got you.
Here's the exported survey sample ...
Here's the exported survey sample ...
Attachments:
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10634
- Thank you received: 3698
12 years 9 months ago #62745
by tpartner
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Using previous Array question responses to set following Array subquestions
Okay, add the following script to the source of the multiple-options question (or its help). Replace "MM" with the multiple-options question ID and "AA" with the array question ID (line 7).
The script assigns column-specific classes to the answer cells and answer headers of the array question. Then it loops through all checkboxes in the multiple-options question and if they aren't checked, hides the corresponding column elements in the array question.
There is also a listener on the multiple-options checkboxes so the script can be used to filter the columns of the array dynamically (without hiding the multiple-options question). It was unclear from your description whether or not you wanted to hide the multiple-options question, so I didn't.
Here is a sample survey with the script in the source of the first question help text in the first group (the multiple-options question help text). You will need to change the question IDs in line 7 of the script to match those in your survey after importing (group and question IDs get changed in the import process). I also put a condition on the array so it only appears if there are checked boxes in the multiple-options question.
The script assigns column-specific classes to the answer cells and answer headers of the array question. Then it loops through all checkboxes in the multiple-options question and if they aren't checked, hides the corresponding column elements in the array question.
There is also a listener on the multiple-options checkboxes so the script can be used to filter the columns of the array dynamically (without hiding the multiple-options question). It was unclear from your description whether or not you wanted to hide the multiple-options question, so I didn't.
Code:
<script type="text/javascript" charset="utf-8"> $(document).ready(function() { // Call the column handling function // Params - the IDs of the checkbox question and the array question handleCols(MM, AA); function handleCols(qCheckbox, qArray) { // Assign column-specific classes to answer cells of the "column" question $('#question'+qArray+' table.question thead th').each(function(i){ $(this).addClass('ansCol'+i+''); }); $('#question'+qArray+' table.question tbody').each(function(i){ $('td', this).each(function(i){ $(this).addClass('ansCol'+i+''); }); }); // Initially hide or show array columns depending on checkboxes hideShow(qCheckbox, qArray); // A listener on the checkboxes to hide or show array columns depending on checkboxes $('#question'+qCheckbox+' input.checkbox').click(function(){ hideShow(qCheckbox, qArray); }); } // A function to hide or show columns depending on checkboxes in a multi-opt question function hideShow(qCheckbox, qArray) { // Loop through all multi-opt checkboxes $('#question'+qCheckbox+' input.checkbox').each(function(i){ if($(this).attr('checked') == true) { $('#question'+qArray+' .ansCol'+i+'').show(); } else { $('#question'+qArray+' .ansCol'+i+'').hide(); $('#question'+qArray+' .ansCol'+i+' input[type="checkbox"]').attr('checked', false); } }); } }); </script>
Here is a sample survey with the script in the source of the first question help text in the first group (the multiple-options question help text). You will need to change the question IDs in line 7 of the script to match those in your survey after importing (group and question IDs get changed in the import process). I also put a condition on the array so it only appears if there are checked boxes in the multiple-options question.
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Attachments:
The topic has been locked.