source: TI04-geosplat/trunk/gsc/authors_notes/javascript_fix_for_mutually_exclusives.html @ 1210

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI04-geosplat/trunk/gsc/authors_notes/javascript_fix_for_mutually_exclusives.html@1210
Revision 1210, 3.6 KB checked in by astephen, 14 years ago (diff)

Updated lots of stuff to get zsi working with version 2.0 or lower.

Line 
1<HTML>
2<HEAD>
3
4<SCRIPT LANGUAGE="JAVASCRIPT">
5
6function getCheckedIndex(radioButton) {
7    //var ff=document.forms["formy"];
8    for (i=0; i<radioButton.length; i++) {
9        if (radioButton[i].checked==true) {
10            return i;
11        }
12    }
13}
14
15function keepExclusive(changed) {
16    var ff=document.forms["formy"];
17    var A=ff.A;
18    var B=ff.B;
19    var C=ff.C;
20    var formOptions=[0,1,2,3];
21    var len=formOptions.length;
22
23    var AChecked=getCheckedIndex(A);
24    var BChecked=getCheckedIndex(B);
25    var CChecked=getCheckedIndex(C);
26
27    //alert("checked indices (A,B,C): "+AChecked.toString()+BChecked.toString()+CChecked.toString());
28    ff.fred.value="checked: "+AChecked.toString()+BChecked.toString()+CChecked.toString();   
29     
30    if (changed=="A") {
31        if (BChecked==AChecked) {
32            // Change B
33            for (i=0; i<len; i++) {
34                if ((CChecked!=i) && (AChecked!=i)) { 
35                    ff.B[i].checked=true;
36                    break;
37                }
38            }
39        } else if (CChecked==AChecked) {
40            // Change C
41            for (i=0; i<len; i++) {             
42                if ((BChecked!=i) && (AChecked!=i)) { 
43                    ff.C[i].checked=true;
44                    break;
45                }
46            }
47        }
48    } 
49
50    if (changed=="B") {
51        if (AChecked==BChecked) {
52            // Change A
53            for (i=0; i<len; i++) {
54                if ((CChecked!=i) && (BChecked!=i)) { 
55                    ff.A[i].checked=true;
56                    break;
57                }
58            }
59        } else if (CChecked==BChecked) {
60            // Change C
61            for (i=0; i<len; i++) {             
62                if ((BChecked!=i) && (BChecked!=i)) { 
63                    ff.C[i].checked=true;
64                    break;
65                }
66            }
67        }
68    } 
69
70    if (changed=="C") {
71        if (AChecked==CChecked) {
72            // Change A
73            for (i=0; i<len; i++) {
74                //alert(i.toString());
75                if ((BChecked!=i) && (CChecked!=i)) { 
76                    ff.A[i].checked=true;
77                    break;
78                }
79            }
80        } else if (BChecked==CChecked) {
81            // Change B
82            for (i=0; i<len; i++) {             
83                if ((AChecked!=i) && (CChecked!=i)) { 
84                    ff.B[i].checked=true;
85                    break;
86                }
87            }
88        }
89    } 
90
91    var AChecked=getCheckedIndex(A);
92    var BChecked=getCheckedIndex(B);
93    var CChecked=getCheckedIndex(C);
94    // Call again to do a double check here.
95    // Just in case fast clicking got very confused.
96    if (AChecked==BChecked) { keepExclusive("A"); }
97    if (AChecked==CChecked) { keepExclusive("C"); }
98    if (BChecked==CChecked) { keepExclusive("B"); }
99}
100
101</SCRIPT>
102
103</HEAD>
104<BODY>
105
106
107<FORM NAME="formy" METHOD="GET" TARGET="JIJI">
108
109<TABLE>
110<TR><TD></TD><TD>A</TD><TD>B</TD><TD>C</TD></TR>
111<TR><TD>0</TD>
112<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('A');" NAME="A" CHECKED></TD>
113<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('B');" NAME="B"></TD>
114<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('C');" NAME="C" VALUE=0></TD></TR>
115
116<TR><TD>1</TD>
117<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('A');" NAME="A"></TD>
118<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('B');" NAME="B" CHECKED></TD>
119<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('C');" NAME="C" VALUE=1></TD></TR>
120
121<TR><TD>2</TD>
122<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('A');" NAME="A"></TD>
123<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('B');" NAME="B"></TD>
124<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('C');" NAME="C" VALUE=2 CHECKED></TD></TR>
125
126<TR><TD>3</TD>
127<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('A');" NAME="A"></TD>
128<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('B');" NAME="B"></TD>
129<TD><INPUT TYPE="RADIO" ONCLICK="keepExclusive('C');" NAME="C" VALUE=3></TD></TR>
130</TABLE>
131
132<P><INPUT TYPE="text" NAME="fred" VALUE=""/>
133</FORM>
134</BODY>
135
136</HTML>
137
Note: See TracBrowser for help on using the repository browser.