Difference between revisions of "Prioritize sub questions in a text grid question"
(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 | + | 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 11:46, 2 February 2012
Contents
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