[JS] welk element heeft focus?

Pagina: 1
Acties:

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 22:42

Rhapsody

In Metal We Trust

Topicstarter
Hallo,

Is het mogelijk om via JS te detecteren, welk formulier element (als alleen het id van het form bekend is) op dat moment focus heeft?

Op internet kan ik alleen maar het focus geven aan elementen vinden, maar nergens iets over het opvragen.

🇪🇺 pro Europa!


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je zou eens naar de volgende kreten moet zoeken:
• Events
• Bubble


Hier dus: http://www.quirksmode.org/js/events_order.html :)

[ Voor 42% gewijzigd door BtM909 op 13-07-2004 14:30 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 22:42

Rhapsody

In Metal We Trust

Topicstarter
Ik gebruik nu document.activeElement , en dat werkt :D

Alleen nog ff voor elkaar zien te krijgen dat wanneer de value 'undefined' is, dat ie er dan niets mee doet.....

Iig bedankt :)

🇪🇺 pro Europa!


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

code:
1
2
3
if (document.activeElement) {
    // doe iets :P
}

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Bosmonster schreef op 13 juli 2004 @ 14:46:
code:
1
2
3
if (document.activeElement) {
    // doe iets :P
}
Dit werkt he, maar is het niet de juiste manier om type of te gebruiken :?

[edit bosmonster]

oops sorry.. verkeerde knopje

[ Voor 40% gewijzigd door Bosmonster op 13-07-2004 15:02 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 22:42

Rhapsody

In Metal We Trust

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
    if (document.activeElement)
    {
        document.getElementById('txtFilter').value = '';
        var str = document.activeElement;
        if (typeof str.value == 'string')
        {
            document.getElementById('txtFilter').value = 
document.activeElement.value;
            sValue = document.activeElement.id;
        }
    }

heb ik nu, dat werkt naar behoren.

[ Voor 15% gewijzigd door Rhapsody op 13-07-2004 14:54 ]

🇪🇺 pro Europa!


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

BtM909 schreef op 13 juli 2004 @ 14:51:
[...]

Dit werkt he, maar is het niet de juiste manier om type of te gebruiken :?
Waarom? undefined is voor zover ik weet het null equivalent van JS. En dit evalueert gewoon naar false.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 22:39

crisp

Devver

Pixelated

undefined is zeker niet hetzelfde als false, het evalueert naar false als je het als conditional statement gebruikt en dat is de enige juiste bewoording.
undefined is ook zeker weten niet de null equivalent van JS:
JavaScript:
1
2
3
4
5
6
alert(undefined==null); // true
alert(undefined===null); // false
alert(undefined==false); // false (!)
alert(undefined===false); // false

if (!undefined) alert('true');

JavaScript:
1
2
3
var myprop = null;
alert(typeof myprop); // object
alert(typeof myprop2);  // undefined

undefined is een toplevel property, maar in sommige JS implementaties bestaat hij niet. Dit is eenvoudig op te lossen door 'm zelf aan te maken:
JavaScript:
1
var undefined;

je kan dan eenvoudiger checken of iets undefined is:
JavaScript:
1
if (tralala === undefined) { }


Nu meen ik echter dat IE nog wel eens moelijk doet met de laatste oplossing (ws oudere IE versies), dus gebruik ik toch meestal de typeof operator. Hier op GoT gebruik ik het vaak vanwege het educatieve karakter (je leert onderscheid maken tussen de verschillende primitieve types van objecten).

Deze is ook leuk:
JavaScript:
1
2
var b = new Boolean(false);
if (b) alert('true!');


en last but not least: de waarde null toekennen aan een property is dus niet hetzelfde als de property verwijderen waardoor hij undefined wordt:
JavaScript:
1
2
3
4
5
6
7
8
9
10
var o = {}

o.myprop = 'foo';
alert(typeof o.myprop); // string

o.myprop = null;
alert(typeof o.myprop); // object

delete o.myprop;
alert(typeof o.myprop); // undefined

[ Voor 92% gewijzigd door crisp op 13-07-2004 23:12 ]

Intentionally left blank


Verwijderd

Dat activeelement is wel IE only toch? Is er ook een generieke Mozilla equivalent?

Iig, zo zou het ook moeten werken in Mozilla:
document.activeElement=null;
document.addEventListener('focus',doe2,true);
function doe2(e){document.activeElement=e.target;}

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

undefined is zeker niet hetzelfde als false, het evalueert naar false als je het als conditional statement gebruikt en dat is de enige juiste bewoording.
Dat is ook niet exact wat ik zei natuurlijk :P

Maar goed.. het ging erom of je simpelweg:

if (undefined) {}

kunt gebruiken.. en daar lijkt me dus niks fout aan als het evalueert naar false.
Pagina: 1