Both horizontal and vertical single grid

From Catglobe Wiki
Jump to: navigation, search

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

Example 1.JPG


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 }

Source

Questionnaire Resource Id on cg.catglobe.com site: 164079 (Question: Q3_Both_horizontal_and_vertical_single_grid)