More actions
New page: Chalenge : There are a single grid question . Respondents should prioritize statements (sub questions) . <br>Example : I have a list of trade-mark and want the user to prio... |
No edit summary |
||
(5 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
== Challenge : == | |||
There are a single grid question . Respondents should prioritize statements (sub questions) . | There are a single grid question . Respondents should prioritize statements (sub questions) . | ||
<br>Example : | == <br>Example : == | ||
I have a list of trade-mark and want the user to prioritize those list : | I have a list of trade-mark and want the user to prioritize those list : | ||
Line 17: | Line 17: | ||
[[Image:Example 1.JPG]]<br> | [[Image:Example 1.JPG]]<br> | ||
<br>Solution : | == <br>Solution : == | ||
Use single grid question (statements as subquestion and ranks as answer option ) | Use single grid question (statements as subquestion and ranks as answer option ) | ||
Line 23: | Line 23: | ||
<br> | <br> | ||
Code | == Code == | ||
The script makes a single grid question function as a single grid both horizontally and vertically. | The script makes a single grid question function as a single grid both horizontally and vertically. | ||
option.prototype.getHTML = function(ltype) { | <source lang="javascript" line="1"> | ||
option.prototype.getHTML = function(ltype) | |||
{ | |||
var stmp = ""; | |||
if (this.visible) | |||
{ | |||
switch (ltype) | |||
{ | |||
case 2: | |||
stmp += "<input type=\"radio\" "; | |||
stmp += "name=\"" + this.label + "\" "; | |||
stmp += "value=\"" + this.value + "\" "; | |||
if (this.checked) | |||
stmp += "checked "; | |||
if (this.disabled) | |||
stmp += "disabled "; | |||
stmp += "onclick=\"myoptclick('" + this.label + "'," + this.index + ",false);\">"; | |||
return "<td valign=\"center\" align=\"" + this.align + "\">" + stmp + "</td>"; ; | |||
break; | |||
} | |||
} | |||
} | |||
quest.next = nextTest; | |||
function nextTest() | |||
{ | |||
// initialise check array | |||
var arrIndexUsed = new Array(); | |||
for (i = 0; i < quest.questions[0].options.length; i++) | |||
arrIndexUsed[i] = false; | |||
// loop through options and check for double used options | |||
for (i = 0; i < quest.questions.length; i++) | |||
{ | |||
for (j = 0; j < quest.questions[i].options.length; j++) | |||
{ | |||
if (quest.questions[i].options[j].checked) | |||
arrIndexUsed[j] = true; | |||
} | |||
} | |||
// loop through possible answer options and check that all are used | |||
for (i = 0; i < arrIndexUsed.length; i++) | |||
{ | |||
if (!arrIndexUsed[i]) | |||
{ | |||
alert('All options must used'); | |||
return false; | |||
} | |||
} | |||
buttonsStatus(true); | |||
document["query"]["dir"].value = "next"; | |||
return true; | |||
} | |||
function myoptclick(slbl, lidx, blnk) | |||
{ | |||
optclick(slbl, lidx, blnk); | |||
for (i = 0; i < quest.questions.length; i++) | |||
{ | |||
if (quest.questions[i].label != slbl) | |||
{ | |||
quest.questions[i].options[lidx].checked = false; | |||
o1 = document["query"][quest.questions[i].label]; | |||
cb = o1; | |||
cb[lidx].checked = false; | |||
} | |||
else | |||
{ | |||
for (j = 0; j < quest.questions[i].options.length; j++) | |||
quest.questions[i].options[j].checked = false; | |||
quest.questions[i].options[lidx].checked = true; | |||
o1 = document["query"][quest.questions[i].label]; | |||
cb = o1; | |||
cb[lidx].checked = true; | |||
} | |||
} | |||
} | |||
</source> | |||
== Source == | |||
Questionnaire Resource Id on cg.catglobe.com site: 164079 (Question: Q3_Both_horizontal_and_vertical_single_grid) | |||
Latest revision as of 07:05, 3 February 2012
Challenge :
There are a single grid question . Respondents should prioritize statements (sub questions) .
Example :
I have a list of trade-mark and want the user to prioritize those list :
Dell
Apple
IBM
FPT Elead
Solution :
Use single grid question (statements as subquestion and ranks as answer option )
Code
The script makes a single grid question function as a single grid both horizontally and vertically.
option.prototype.getHTML = function(ltype)
{
var stmp = "";
if (this.visible)
{
switch (ltype)
{
case 2:
stmp += "<input type=\"radio\" ";
stmp += "name=\"" + this.label + "\" ";
stmp += "value=\"" + this.value + "\" ";
if (this.checked)
stmp += "checked ";
if (this.disabled)
stmp += "disabled ";
stmp += "onclick=\"myoptclick('" + this.label + "'," + this.index + ",false);\">";
return "<td valign=\"center\" align=\"" + this.align + "\">" + stmp + "</td>"; ;
break;
}
}
}
quest.next = nextTest;
function nextTest()
{
// initialise check array
var arrIndexUsed = new Array();
for (i = 0; i < quest.questions[0].options.length; i++)
arrIndexUsed[i] = false;
// loop through options and check for double used options
for (i = 0; i < quest.questions.length; i++)
{
for (j = 0; j < quest.questions[i].options.length; j++)
{
if (quest.questions[i].options[j].checked)
arrIndexUsed[j] = true;
}
}
// loop through possible answer options and check that all are used
for (i = 0; i < arrIndexUsed.length; i++)
{
if (!arrIndexUsed[i])
{
alert('All options must used');
return false;
}
}
buttonsStatus(true);
document["query"]["dir"].value = "next";
return true;
}
function myoptclick(slbl, lidx, blnk)
{
optclick(slbl, lidx, blnk);
for (i = 0; i < quest.questions.length; i++)
{
if (quest.questions[i].label != slbl)
{
quest.questions[i].options[lidx].checked = false;
o1 = document["query"][quest.questions[i].label];
cb = o1;
cb[lidx].checked = false;
}
else
{
for (j = 0; j < quest.questions[i].options.length; j++)
quest.questions[i].options[j].checked = false;
quest.questions[i].options[lidx].checked = true;
o1 = document["query"][quest.questions[i].label];
cb = o1;
cb[lidx].checked = true;
}
}
}
Source
Questionnaire Resource Id on cg.catglobe.com site: 164079 (Question: Q3_Both_horizontal_and_vertical_single_grid)