Prioritize sub questions in a text grid question

From Catglobe Wiki
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