Difference between revisions of "Both horizontal and vertical single grid"
(→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 += " | + | 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);\" | + | } |
− | + | quest.next = nextTest; | |
− | return " | + | 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 | + | 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 | + | return true; |
− | + | } | |
− | for (j=0;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 | + | for (j = 0; j < quest.questions[i].options.length; j++) |
− | + | quest.questions[i].options[j].checked = false; | |
− | if ( | + | 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 | ||
− | |||
− | if ( quest.questions[i].label | ||
− | |||
− | quest.questions[i].options[lidx].checked = false; | ||
− | |||
− | o1 = document["query"][quest.questions[i].label]; | ||
− | |||
− | cb = o1; | ||
− | |||
− | cb[lidx].checked = false; | ||
− | |||
− | } | ||
− | |||
− | |||
− | |||
− | for (j=0;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
Contents
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
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 }