Array Question with "Other" Answer

More
3 years 8 months ago #107415 by jajas
jajas created the topic: Array Question with "Other" Answer
Dear LS Team,

I have matrix question and in LS i choose Array Question Type.
but in this question i need add "Other" Option for sub question.

HOw to add "Other" Option to array (matrix) question type?

Regards,

JajaS

Please Log in to join the conversation.

More
3 years 8 months ago #107418 by DenisChenu
DenisChenu replied the topic: Array Question with "Other" Answer
Hi,

You can add a sub question, code OTHE (for example), if you need other comment :adding a question text with condition !is_empty(QQ_OTHE)

Denis

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 8 months ago #107422 by jajas
jajas replied the topic: Array Question with "Other" Answer
Hi Denis,

i'm not clear with your explanation.
can you give me an example for this case, please

Jajas

Please Log in to join the conversation.

More
3 years 8 months ago - 3 years 8 months ago #107427 by tpartner
tpartner replied the topic: Array Question with "Other" Answer
You can add a multiple-short-text question after the array and use JavaScript to move the text inputs into the array.

Here is a similar solution - www.limesurvey.org/en/forum/design-issue...to-text-input#102550 .


.

Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last Edit: 3 years 8 months ago by tpartner.

Please Log in to join the conversation.

More
3 years 8 months ago #107571 by AdamDesrosiers
AdamDesrosiers replied the topic: Array Question with "Other" Answer
I need to understand this as well. Been poking around these forums and there's too much assumed about one's coding ability. Please answer as if to a simpleton.

In any case, you link to a different kind of answer. The example in your link is to add text input fields into the answer fields of an array.

The OP in this thread, and myself, don't want to do anything fancy to the answer fields, just add one more subquestion to the array of "other" with an input ... the answers remain the same.

So for instance, how do you feel about the following bands/musicians?

Attachments:

Please Log in to join the conversation.

More
3 years 8 months ago #107603 by first
first replied the topic: Array Question with "Other" Answer
I can do it for you if you can give me link to the page. Please note that survey should have group by group display so that I can add an additional hidden short free text question below your array type question.

Survey Designer and Programmer

Please Log in to join the conversation.

More
3 years 7 months ago #107719 by tpartner
tpartner replied the topic: Array Question with "Other" Answer
Here is a small script that when placed in the source of an array question will:

1) Identify and hide a following short-text question
2) Move the text input from that hidden question into the last subquestion of the array as depicted above

<script type="text/javascript" charset="utf-8">	
 
	$(document).ready(function() {
 
		// Identify the questions
		var q1 = $('#question'+{QID}+'');
		var q2 = $(q1).nextAll('.text-short:eq(0)');
 
		// Hide the short-text question
		$(q2).hide();
 
		// Move the hidden text input into the array
		$('th.answertext:last', q1).append($('input[type="text"]', q2));
 
		// Some styling...
		$('input[type="text"]', q1).css({
			'width': '50%'
		});
	});
</script>

Here's a working sample for 2.05:

File Attachment:

File Name: limesurvey...3296.lss
File Size:17 KB

Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Attachments:

Please Log in to join the conversation.

More
3 years 7 months ago #107747 by first
first replied the topic: Array Question with "Other" Answer
@tpartner : You write very nice generic jquery :). I have a suggestion in your code. Please append an error below below question text and do not let user to continue (return false on submit) if user try to pass question leaving textbox empty and choosing a radio button in the same row or vice versa.

Survey Designer and Programmer

Please Log in to join the conversation.

More
3 years 7 months ago #107748 by first
first replied the topic: Array Question with "Other" Answer
and the code should be placed in workarounds because having an other specify in array questions in very common requirement.

Survey Designer and Programmer

Please Log in to join the conversation.

More
3 years 7 months ago - 3 years 7 months ago #107751 by tpartner
tpartner replied the topic: Array Question with "Other" Answer
Hi Trivender, thanks for the suggestion. I thought of that but there are a couple of behaviour issues to be considered...

1) What if the respondent changes their mind about "Other". There is no way to deselect a radio. I suppose we could put a listener on the text input to deselect all radios in that row if a keyup event detects no value in the text input but that's not entirely intuitive. Maybe a "Clear" button?.

2) How to handle mandatory questions? Maybe a hidden "N/A" column?

Your thoughts?

.

Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last Edit: 3 years 7 months ago by tpartner.

Please Log in to join the conversation.

More
3 years 7 months ago #107753 by first
first replied the topic: Array Question with "Other" Answer
I tried to write a little jquery code showing my thoughts . Please suggest how it looks.
<script>
$(document).ready(function(){
$('button#movesubmitbtn').on('click',function(){
var $otherRow = $('div.array-flexible-row table.subquestions-list tr:has("input:text")');
for(var i=0;i<$otherRow.length;i++){
var checkedRadio = $otherRow.eq(i).find('td:not("td.noanswer-item")').find('input:checked').length;
var boxVal = $.trim($otherRow.eq(i).find('input:text').val());
if(((checkedRadio != 0) && (boxVal == "")) || ((checkedRadio == 0) && (boxVal != ""))){
alert('Please review your answer in other specify row.');
return false;
}
break;
}
});
//clear other specify value on click of no answer
$('td.noanswer-item').on('click',function(){
$(this).parent().find('input:text').val('');
});
//uncheck no answer on keydown inside otherspecify box.
$('div.array-flexible-row table.subquestions-list input:text').on('keydown',function(){
$(this).parent().parent().find('td.noanswer-item input:radio').prop('checked',false);
});
});
</script>

Survey Designer and Programmer

Please Log in to join the conversation.

More
3 years 7 months ago #107792 by tpartner
tpartner replied the topic: Array Question with "Other" Answer
Okay, using the "No Answer" survey setting simplifies things a bit and to expand a little on your line of thinking...
  1. Add a class to the "Other" row for styling and manipulation
  2. Use question-specific selectors
  3. Use keyup and change events to on the text inputs (in case someone pastes)
  4. Prevent the click event on the submit button from firing more than once if there are multiple instances of these questions
<script type="text/javascript" charset="utf-8">	
 
	$(document).ready(function() {
 
		// Identify the questions
		var thisQuestion = $('#question'+{QID}+'');
		var nextQuestion = $(thisQuestion).nextAll('.text-short:eq(0)');
 
		// Hide the short-text question
		$(nextQuestion).hide();
 
		// Move the hidden text input into the array
		$('th.answertext:last', thisQuestion).append($('input[type="text"]', nextQuestion)).closest('tr').addClass('otherRow');
 
		// Some styling...
		$('input[type="text"]', thisQuestion).css({
			'width': '50%'
		});		
 
		// Handle the "Other" radios
		$('input[type="text"]', thisQuestion).on('keyup change',function(event){
			event.stopPropagation();
 
			if($.trim($(this).val()) == '') {
				$('.otherRow input:radio[value!=""]', thisQuestion).prop('checked',false);
				$('.otherRow input:radio[value=""]', thisQuestion).click();
			}
			else {
				$('.otherRow input:radio[value=""]', thisQuestion).prop('checked',false);
			}
		});	
 
		// Handle the "Other" text input
		$('.otherRow input.radio', thisQuestion).on('click',function(event){
			if($(this).attr('value') == '') {
				$('.otherRow input[type="text"]', thisQuestion).val('');
			}
		});
 
		// Validate the "Other" text input(s) on submit
		if($('#movenextbtn, #movesubmitbtn').attr('data-inserted-other') != 'true') { // We're only doing this once on this page
			$('#movenextbtn, #movesubmitbtn').attr('data-inserted-other', 'true').on('click.insertedOther', function (event) {
 
				var otherError = 0;
 
				$('.array-flexible-row .otherRow').each(function(i) {
 
					if(($('input:radio[value!=""]:checked', this).length > 0 && $('input[type="text"]', this).val() == '') || ($('input:radio[value!=""]:checked', this).length == 0 && $('input[type="text"]', this).val() != '')) {
						otherError = 1;
					}
				});
 
				if(otherError == 1) {
					alert('Please review your answer in the "Other" row(s).');
					return false;
				}
			});
		}
	});
</script>


File Attachment:

File Name: limesurvey...9779.lss
File Size:26 KB

Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Attachments:
The following user(s) said Thank You: jake1729

Please Log in to join the conversation.

More
3 years 7 months ago #107841 by jajas
jajas replied the topic: Array Question with "Other" Answer
Dear LS Team,

To make it simple, how about make enhancement in limesurvey,
for array question add Option for Other answer like single or multiple question type?

i believe LS team can do that.

Please Log in to join the conversation.

More
3 years 7 months ago #107844 by jajas
jajas replied the topic: Array Question with "Other" Answer
How about array question like attached image.

any idea?

Need suggestion please...
Attachments:

Please Log in to join the conversation.

More
3 years 7 months ago - 3 years 7 months ago #107848 by tpartner
tpartner replied the topic: Array Question with "Other" Answer

To make it simple, how about make enhancement in limesurvey,
for array question add Option for Other answer like single or multiple question type?

You can submit a feature request - www.limesurvey.org/en/community-services/feature-requests .


How about array question like attached image.

I think you have enough information in this thread to accomplish that.


.

Cheers,
Tony Partner
Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last Edit: 3 years 7 months ago by tpartner.

Please Log in to join the conversation.

Start now!

Just create your account and start using Limesurvey today.

Register now
Join our Newsletter!