Toggle menu
862
3.8K
30.2K
279.1K
Catglobe Wiki
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Both horizontal and vertical single grid

From Catglobe Wiki

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;
      }
   }
}