Difference between revisions of "Both horizontal and vertical single grid"

From Catglobe Wiki
Jump to: navigation, search
(Code)
Line 28: Line 28:
  
 
<source lang="javascript" line="1">
 
<source lang="javascript" line="1">
option.prototype.getHTML = function(ltype) {  
+
option.prototype.getHTML = function(ltype)
 
+
{
var stmp = "";  
+
  var stmp = "";
 
+
  if (this.visible)
if(this.visible) {  
+
  {
 
+
      switch (ltype)
switch(ltype) {  
+
      {
 
+
        case 2:
case 2:  
+
            stmp += "<input type=\"radio\" ";
 
+
            stmp += "name=\"" + this.label + "\" ";
stmp += "&lt;input type=\"radio\" ";  
+
            stmp += "value=\"" + this.value + "\" ";
 
+
            if (this.checked)
stmp += "name=\""+this.label+"\" ";  
+
              stmp += "checked ";
 
+
            if (this.disabled)
stmp += "value=\""+this.value+"\" ";  
+
              stmp += "disabled ";
 
+
            stmp += "onclick=\"myoptclick('" + this.label + "'," + this.index + ",false);\">";
if(this.checked) stmp += "checked ";  
+
            return "<td valign=\"center\" align=\"" + this.align + "\">" + stmp + "</td>"; ;
 
+
            break;
if(this.disabled) stmp += "disabled ";  
+
      }
 
+
  }
stmp += "onclick=\"myoptclick('"+this.label+"',"+this.index+",false);\"&gt;";  
+
}
 
+
quest.next = nextTest;
return "&lt;td valign=\"center\" align=\""+this.align+"\"&gt;"+stmp+"&lt;/td&gt;";;  
+
function nextTest()
 
+
{
break;  
+
  // 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++)
quest.next = nextTest;  
+
      {
 
+
        if (quest.questions[i].options[j].checked)
function nextTest() {  
+
            arrIndexUsed[j] = true;
 
+
      }
// initialise check array  
+
  }
 
+
  // loop through possible answer options and check that all are used
var arrIndexUsed = new Array();  
+
  for (i = 0; i < arrIndexUsed.length; i++)
 
+
  {
for (i=0;i&lt;quest.questions[0].options.length;i++) {
+
      if (!arrIndexUsed[i])
 
+
      {
arrIndexUsed[i] = false;  
+
        alert('All options must used');
 
+
        return false;
}
+
      }
 
+
  }
// loop through options and check for double used options  
+
  buttonsStatus(true);
 
+
  document["query"]["dir"].value = "next";
for (i=0;i&lt;quest.questions.length;i++) {  
+
  return true;
 
+
}
for (j=0;j&lt;quest.questions[i].options.length;j++) {  
+
function myoptclick(slbl, lidx, blnk)
 
+
{
if (quest.questions[i].options[j].checked) {
+
  optclick(slbl, lidx, blnk);
 
+
  for (i = 0; i < quest.questions.length; i++)
arrIndexUsed[j] = true;  
+
  {
 
+
      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;
 
+
      }
// loop through possible answer options and check that all are used  
+
      else
 
+
      {
for (i=0;i&lt;arrIndexUsed.length;i++) {  
+
        for (j = 0; j < quest.questions[i].options.length; j++)
 
+
            quest.questions[i].options[j].checked = false;
if (&nbsp;! arrIndexUsed[i] ) {  
+
        quest.questions[i].options[lidx].checked = true;
 
+
        o1 = document["query"][quest.questions[i].label];
alert('All options must used');  
+
        cb = o1;
 
+
        cb[lidx].checked = true;
return false;  
+
      }
 
+
  }
}  
 
 
 
}  
 
 
 
buttonsStatus(true);  
 
 
 
document["query"]["dir"].value = "next";  
 
 
 
return true;  
 
 
 
}  
 
 
 
function myoptclick(slbl, lidx, blnk) {  
 
 
 
optclick(slbl, lidx, blnk);  
 
 
 
for (i=0;i&lt;quest.questions.length;i++) {  
 
 
 
if ( quest.questions[i].label&nbsp;!= 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&lt;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>

Revision as of 09:50, 2 March 2009

Chalenge :

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 }