Prioritize sub questions in a text grid question: Difference between revisions
From Catglobe Wiki
More actions
 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...  | 
				No edit summary  | 
				||
| Line 1: | Line 1: | ||
==Challenge==  | ==Challenge==  | ||
In order to let the respondent prioritize a list of products  | 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)  | As a questionnaire creator  | ||
'''Example'''<br/>  | |||
[[Image:  | 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 10: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)
Solution
- Add a Text grid question to Questionnaire editor like below
 - Go to menu Properties -> Question scripts -> Java script tab -> Input script
 
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
				
