- Posts: 21
- Thank you received: 0
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Adding textbox in basic array
- kratugoel
- Offline
- Junior Member
Less
More
3 years 9 months ago #202555
by kratugoel
Replied by kratugoel on topic Adding textbox in basic array
I am not sure how do I trigger it? Would you have any suggestions or links to the solution for that? Apologies if my initial message wasn't clear. I would like to present the pop-up to my team as an added bonus.
Thank you for your help
Thank you for your help
The topic has been locked.
- Joffm
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12908
- Thank you received: 3975
3 years 9 months ago - 3 years 9 months ago #202567
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Adding textbox in basic array
Hi,you already found this solution, didn't you?
forums.limesurvey.org/forum/can-i-do-thi...ment-fields?start=15
I adapted the script by removing everything related to the array rows, put the button into the question text and got:
First the button (a simple bootstrap button):
and the script:
Joffm
The script can be simplified more ( there is only one comment); so no need to use the each-function.
But I am not familiar at all with javascript. It's only Amateurishness.
forums.limesurvey.org/forum/can-i-do-thi...ment-fields?start=15
I adapted the script by removing everything related to the array rows, put the button into the question text and got:
First the button (a simple bootstrap button):
Code:
<button class="btn btn-default btn-xs" data-backdrop="static" data-keyboard="false" data-target="#comments-{QID}-1" data-toggle="modal" type="button">Click to add a comment</button>
and the script:
Code:
<script type="text/javascript" charset="utf-8"> $(document).on('ready pjax:scriptcomplete',function(){ // Identify the questions var qArrayID = {QID}; var qArray = $('#question'+qArrayID); var arrayLength = $('tr.answers-list', qArray).length; var qComments = qArray.nextAll('.text-long:lt('+arrayLength+')'); // Add some classes qArray.addClass('array-with-comments-question'); $(qComments).each(function(i) { $(this).addClass('comments-question index-'+i).css({ 'position': 'absolute', 'left': '-9999em' }); }); // Handle comments $(qComments).each(function(i) { // Create modals $('body').append('<div class="modal comments-modal" id="comments-'+qArrayID+'-'+(i+1)+'" tabindex="-1" role="dialog">\ <div class="modal-dialog" role="document">\ <div class="modal-content">\ <div class="modal-header">\ <h5 class="modal-title">'+$('.ls-label-question', this).html()+'</h5>\ </div>\ <div class="modal-body">\ </div>\ <div class="modal-footer">\ <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Okay</button>\ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Clear</button>\ </div>\ </div>\ </div>\ </div>'); // Move textareas into modals $('#comments-'+qArrayID+'-'+(i+1)+' .modal-body').append($('textarea', this)); // Modal button events $('#comments-'+qArrayID+'-'+(i+1)+' .modal-footer .btn-secondary').on('click', function(e) { $('#comments-'+qArrayID+'-'+(i+1)+' textarea').val(''); }); }); // Interrupt the Next/Submit function (to put comments back in the form) $('#limesurvey').submit(function(e) { $('.comments-modal[id^="comments-'+qArrayID+'-"]').each(function(i) { var qID = $('textarea:eq(0)', this).attr('id').split('X')[2]; $('#question'+qID+' .answer-item:eq(0)').append($('textarea:eq(0)', this)); }); }); }); </script>
Joffm
The script can be simplified more ( there is only one comment); so no need to use the each-function.
But I am not familiar at all with javascript. It's only Amateurishness.
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 9 months ago by Joffm.
The following user(s) said Thank You: kratugoel
The topic has been locked.
- kratugoel
- Offline
- Junior Member
Less
More
- Posts: 21
- Thank you received: 0
3 years 8 months ago #203208
by kratugoel
Replied by kratugoel on topic Adding textbox in basic array
Hi
I am trying to implement this solution but I am not able to. Would you happen to have a sample survey depicting this solution? Thank you for the assistance.
I am trying to implement this solution but I am not able to. Would you happen to have a sample survey depicting this solution? Thank you for the assistance.
The topic has been locked.
- kratugoel
- Offline
- Junior Member
Less
More
- Posts: 21
- Thank you received: 0
3 years 8 months ago #203209
by kratugoel
Replied by kratugoel on topic Adding textbox in basic array
Also how would any code change if I have to change my question type from the default array to array (numbers)?
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10103
- Thank you received: 3593
3 years 8 months ago #203211
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 Adding textbox in basic array
Joffm has already supplied a sample survey.kratugoel wrote: Hi
I am trying to implement this solution but I am not able to. Would you happen to have a sample survey depicting this solution? Thank you for the assistance.
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- kratugoel
- Offline
- Junior Member
Less
More
- Posts: 21
- Thank you received: 0
3 years 8 months ago #203213
by kratugoel
Replied by kratugoel on topic Adding textbox in basic array
The sample survey provided is for the comment boxes. That works well for me so thank you for that. In that however, I was wondering how to implement the same comment box for array (numbers). Additionally, I was actually seeking a sample survey for the earlier solution provided by him where the large text box appears below the question(without the comment box).
Thank you
Thank you
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10103
- Thank you received: 3593
3 years 8 months ago #203219
by tpartner
Sample survey attached:
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Replied by tpartner on topic Adding textbox in basic array
This will implement Joffm's last solution in an array-numbers question:I was wondering how to implement the same comment box for array (numbers)
Code:
Q1<br /> <button class="btn btn-default btn-xs" data-backdrop="static" data-keyboard="false" data-target="#comments-{QID}" data-toggle="modal" type="button">Click to add a comment</button> <script type="text/javascript" charset="utf-8"> $(document).on('ready pjax:scriptcomplete',function(){ // Identify the questions var qArrayID = {QID}; var qArray = $('#question'+qArrayID); var qComments = qArray.nextAll('.text-long:eq(0)'); // Add some classes qArray.addClass('array-with-comments-question'); $(qComments).each(function(i) { $(this).addClass('comments-question index-'+i).css({ 'position': 'absolute', 'left': '-9999em' }); }); // Create the modal $('body').append('<div class="modal comments-modal" id="comments-'+qArrayID+'" tabindex="-1" role="dialog">\ <div class="modal-dialog" role="document">\ <div class="modal-content">\ <div class="modal-header">\ <h5 class="modal-title">'+$('.ls-label-question', qComments).html()+'</h5>\ </div>\ <div class="modal-body">\ </div>\ <div class="modal-footer">\ <button type="button" class="btn btn-primary" data-bs-dismiss="modal">Okay</button>\ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Clear</button>\ </div>\ </div>\ </div>\ </div>'); // Move textarea into modal $('#comments-'+qArrayID+' .modal-body').append($('textarea', qComments)); // Modal button events $('#comments-'+qArrayID+' .modal-footer .btn-secondary').on('click', function(e) { $('#comments-'+qArrayID+' textarea').val(''); }); // Interrupt the Next/Submit function (to put comments back in the form) $('#limesurvey').submit(function(e) { $('.answer-item:eq(0)', qComments).append($('#comments-'+qArrayID+' textarea:eq(0)')); }); }); </script>
Sample survey attached:
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The following user(s) said Thank You: kratugoel
The topic has been locked.
- tpartner
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 10103
- Thank you received: 3593
3 years 8 months ago #203220
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 Adding textbox in basic array
You will need to be more specific - there are over 75 posts in this thread.Additionally, I was actually seeking a sample survey for the earlier solution provided by him where the large text box appears below the question(without the comment box).
Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The topic has been locked.
- Joffm
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12908
- Thank you received: 3975
3 years 8 months ago - 3 years 8 months ago #203221
by Joffm
Well, here is the explanation again.
Use two questions, a questiomn of type array and a question of type "long text".
Give the array question a css class "myarray" and the text question a css class "mytext"
Add this css snippet.
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Adding textbox in basic array
I was actually seeking a sample survey for the earlier solution provided by him where the large text box appears below the question(without the comment box).
Well, here is the explanation again.
Use two questions, a questiomn of type array and a question of type "long text".
Give the array question a css class "myarray" and the text question a css class "mytext"
Add this css snippet.
Code:
<style type="text/css"> .mytext .question-title-container, .mytext .question-valid-container { display:none; } .myarray .question-container { margin-bottom: 0em; } </style>
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 8 months ago by Joffm.
The following user(s) said Thank You: kratugoel
The topic has been locked.
- kratugoel
- Offline
- Junior Member
Less
More
- Posts: 21
- Thank you received: 0
3 years 8 months ago #203238
by kratugoel
Replied by kratugoel on topic Adding textbox in basic array
Thank you Joffm for sending the solution again. I will try it again. Was making some error earlier. Would this solution work for Array (numbers) as well? Or is there some modifications?
The topic has been locked.
- kratugoel
- Offline
- Junior Member
Less
More
- Posts: 21
- Thank you received: 0
3 years 8 months ago #203239
by kratugoel
Replied by kratugoel on topic Adding textbox in basic array
Thank you Tony Partner for sending the amended solution for array by numbers for the comment box.
The topic has been locked.
- Joffm
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12908
- Thank you received: 3975
3 years 8 months ago #203242
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Adding textbox in basic array
Why should it not work?
You have two questions.
And you do nothing else than hide the question container of the second question and remove the space between them.
So it is absolutely independent of the type of question.
But instead of asking this and wait for an answer, just try.
Joffm
You have two questions.
And you do nothing else than hide the question container of the second question and remove the space between them.
So it is absolutely independent of the type of question.
But instead of asking this and wait for an answer, just try.
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: kratugoel
The topic has been locked.