focus() is om het element focus te geven... niet om te controleren of het element de focus heeft... Wat je zou moeten doen is alle elementen uit de set een onfocus meegeven die in een variabele wegschrijft of welk element de focus heeft.
Als je vervolgens alle elementen een onblur meegeeft die ervoor zorgt dat een random element uit de set de focus krijgt, dan kan de focus nooit buiten de groep elementen komen (zwaaaar irritant maar goed). Enige is dan dat je onload even moet zorgen dat 1 element de focus krijgt om mee te beginnen.
Dus (niet getest, dat mag je zelf even doen):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| <html>
<head>
<script language="javascript">
var sFocussed = '';
function setFocus(sId) {
sFocussed = sId;
}
function unsetFocus(sId) {
if(sFocussed == sId) sFocussed = '';
}
//Checkt focus met een kleine vertraging zodat een evt. setFocus() eerst afgehandeld wordt
function checkFocus(iPause)
{ if(iPause) { self.setTimeout(checkFocus, 100); }
else
{ if(sFocussed == '')
{ //selecteer veld
oElem = document.getElementById("veld1");
oElem.focus();
}
}
}
</script>
</head>
<body onload="document.getElementById('veld3').focus()">
<input id="veld1" type="text" onfocus="setFocus(this.id)" onblur="unsetFocus(this.id);checkFocus(1)">
<input id="veld1" type="text" onfocus="setFocus(this.id)" onblur="unsetFocus(this.id);checkFocus(1)">
<input id="veld1" type="text" onfocus="setFocus(this.id)" onblur="unsetFocus(this.id);checkFocus(1)">
<input id="veld1" type="text" onfocus="setFocus(this.id)" onblur="unsetFocus(this.id);checkFocus(1)">
</body>
</html> |
[
Voor 164% gewijzigd door
Morrar op 08-03-2005 22:01
]