Both horizontal and vertical single grid
Contents
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.
1 option.prototype.getHTML = function(ltype)
2 {
3 var stmp = "";
4 if (this.visible)
5 {
6 switch (ltype)
7 {
8 case 2:
9 stmp += "<input type=\"radio\" ";
10 stmp += "name=\"" + this.label + "\" ";
11 stmp += "value=\"" + this.value + "\" ";
12 if (this.checked)
13 stmp += "checked ";
14 if (this.disabled)
15 stmp += "disabled ";
16 stmp += "onclick=\"myoptclick('" + this.label + "'," + this.index + ",false);\">";
17 return "<td valign=\"center\" align=\"" + this.align + "\">" + stmp + "</td>"; ;
18 break;
19 }
20 }
21 }
22 quest.next = nextTest;
23 function nextTest()
24 {
25 // initialise check array
26 var arrIndexUsed = new Array();
27 for (i = 0; i < quest.questions[0].options.length; i++)
28 arrIndexUsed[i] = false;
29 // loop through options and check for double used options
30 for (i = 0; i < quest.questions.length; i++)
31 {
32 for (j = 0; j < quest.questions[i].options.length; j++)
33 {
34 if (quest.questions[i].options[j].checked)
35 arrIndexUsed[j] = true;
36 }
37 }
38 // loop through possible answer options and check that all are used
39 for (i = 0; i < arrIndexUsed.length; i++)
40 {
41 if (!arrIndexUsed[i])
42 {
43 alert('All options must used');
44 return false;
45 }
46 }
47 buttonsStatus(true);
48 document["query"]["dir"].value = "next";
49 return true;
50 }
51 function myoptclick(slbl, lidx, blnk)
52 {
53 optclick(slbl, lidx, blnk);
54 for (i = 0; i < quest.questions.length; i++)
55 {
56 if (quest.questions[i].label != slbl)
57 {
58 quest.questions[i].options[lidx].checked = false;
59 o1 = document["query"][quest.questions[i].label];
60 cb = o1;
61 cb[lidx].checked = false;
62 }
63 else
64 {
65 for (j = 0; j < quest.questions[i].options.length; j++)
66 quest.questions[i].options[j].checked = false;
67 quest.questions[i].options[lidx].checked = true;
68 o1 = document["query"][quest.questions[i].label];
69 cb = o1;
70 cb[lidx].checked = true;
71 }
72 }
73 }