[JS] Auto focus if(!form.veld.focus)

Pagina: 1
Acties:

  • BARO
  • Registratie: Mei 2003
  • Laatst online: 18-11-2025
Ik heb een aantal inputvelden en wil graag dat wanneer geen van deze velden gefocust is, 1 van deze velden een focus krijgt.

Wat kan ik doen om te controleren of een van de velden gefocust is? (veld_1 t/m veld_18)

  • BARO
  • Registratie: Mei 2003
  • Laatst online: 18-11-2025
Iemand?

Nog even kort mijn vraag:
Hoe kan ik controleren of er een tekstveld (input type="text") geselecteerd is?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

ongeduldig???

onfocus() wellicht?

[ Voor 3% gewijzigd door crisp op 08-03-2005 21:13 ]

Intentionally left blank


  • BARO
  • Registratie: Mei 2003
  • Laatst online: 18-11-2025
Ik wil van 'buitenaf' (d.m.v. een functie) controleren of 1 van de velden geselecteerd is; zo niet, dan moet deze er een selecteren. Dit selecteren is het probleem niet, maar juist wanneer er geen enkel veld geselecteerd is: hoe controleer je dat?

Ik dacht aan iets als: <input type="text" name="veld_18" onBlur="controleer_of_er_een_veld_geselecteerd_is_lol()" /> en dan als functie:
code:
1
2
3
4
5
function controleer(){
 if ( !document.form.veld_1.focus() && !document.form.veld_2.focus() ){
  selecteer_rand_veld();
 }
}


Hierbij krijg je echter een foutmelding als het script een veld dat niet bestaat probeert te selecteren.

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 10-05 19:05
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 ]


  • BARO
  • Registratie: Mei 2003
  • Laatst online: 18-11-2025
Een prachtig stukje script; dat ik daar niet op ben gekomen!

Ik heb het uiteindelijk veranderd naar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  var sFocussed = '';
  function setFocus(sId) {
   sFocussed = sId;
  }

  function unsetFocus(sId) {
   sFocussed = '';
  }

  sFocussed = '1';
  function checkFocus(iPause) {
   if(iPause) {
    self.setTimeout(checkFocus, 100);
   } else{
    if(sFocussed == '') {
     oElem = document.getElementById("veld_1");
     oElem.focus();
    }
   }
  }


code:
1
<input type="text" name="veld_19" value="" maxlength="4" onFocus="setFocus(1); verander_bgcolor(this); leegmaken(this);" onBlur="unsetFocus(1); checkFocus(1); standaard_bgcolor(this); controleer(this)" style="width: 1px; height: 1px; background-color: #E1E8FB; color: #E1E8FB; border: #E1E8FB;" />
'

Nogmaals heel erg bedankt, Morrar! _/-\o_

[ Voor 11% gewijzigd door BARO op 09-03-2005 07:03 ]

Pagina: 1