Difference between revisions of "Prioritize sub questions in a text grid question"

From Catglobe Wiki
Jump to: navigation, search
(New page: ==Challenge== In order to let the respondent prioritize a list of products<br/> As a questionnaire creator<br/> I want to allow him to enter only values in a list of priorities for each pr...)
 
Line 1: Line 1:
 
==Challenge==
 
==Challenge==
In order to let the respondent prioritize a list of products<br/>
+
In order to let the respondent prioritize a list of products
As a questionnaire creator<br/>
+
 
I want to allow him to enter only values in a list of priorities for each product (one priority is only used once)<br/>
+
As a questionnaire creator
'''Example'''<br/>
+
 
[[Image:Prioritize_products.png]]
+
I want to allow him to enter only values in a list of priorities for each product (one priority is only used once)
 +
 
 +
'''Example'''
 +
<br/>
 +
[[Image:PrioritizeSQInTextGrid.jpg]]
 +
==Solution==
 +
*Add a Text grid question to Questionnaire editor like below
 +
*Go to menu Properties -> Question scripts -> Java script tab -> Input script
 +
[[Image:PrioritizeSQInTextGrid Code.jpg]]
 
==Code==
 
==Code==
 
<source lang=javascript>
 
<source lang=javascript>
Line 64: Line 72:
 
questioncheck = extendedQuestionCheck;
 
questioncheck = extendedQuestionCheck;
 
</source>
 
</source>
 +
==Source==
 +
Questionnaire Resource Id on cg site: 159730

Revision as of 12:46, 2 February 2012

Challenge

In order to let the respondent prioritize a list of products

As a questionnaire creator

I want to allow him to enter only values in a list of priorities for each product (one priority is only used once)

Example
PrioritizeSQInTextGrid.jpg

Solution

  • Add a Text grid question to Questionnaire editor like below
  • Go to menu Properties -> Question scripts -> Java script tab -> Input script

PrioritizeSQInTextGrid Code.jpg

Code

function isNumeric_LessThan6(sText)
{
	var ValidChars = "12345";
	if (sText.length != 1)
		return false;
	
	if (ValidChars.indexOf(sText) == -1) 
		return false; 
	
	return true;
}

var normalQuestionCheck = questioncheck;

function extendedQuestionCheck()
{
	var valid = normalQuestionCheck();
	if (!valid)
		return false;
		
	var usedNumbers = "";
	ErrorMessages.getInstance().clearErrorMessages();
	var msg = "";
	
	$("input:text").each(
		function(i)
		{
			if ($(this).attr("name").indexOf("QUESTION.") == 0)
			{
				//check the value
				var v = $(this).val();
				if (!isNumeric_LessThan6(v))
				{
					msg = "Only 1-5 are allowed as input";
					valid = false;
					return;
				}
				
				if (usedNumbers.indexOf(v) != -1)
				{
					valid = false;
					msg = "One value can only be specified for one row";
					return;
				}				
				
				usedNumbers = usedNumbers + v;
			}
		}
	);
	if (!valid)
		ErrorMessages.getInstance().showErrorMessage(msg); 
		
	return valid;
}

questioncheck = extendedQuestionCheck;

Source

Questionnaire Resource Id on cg site: 159730