Prioritize sub questions in a text grid question

From Catglobe Wiki
Revision as of 11:46, 2 February 2012 by Cg van (talk | contribs)
Jump to: navigation, search

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