Toon posts:

[javascript] onFocus() extern aanroepen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zou graag de waarde van een formulierinput willen leegmaken wanneer deze de focus krijgt, maar ik zou dit vanuit een extern script willen aanroepen. :)

Totnutoe heb ik het geprobeerd met if constructies (na het laden van het desbetreffende document via dom0), gegoogled (ik kom niet verder dan het onload event op een body extern toe te passen) en op ala ed gekeken, zonder resultaat.

Weet iemand hier raad met dit probleem ?

  • Skaah
  • Registratie: Juni 2001
  • Niet online
Wat bedoel je precies?
JavaScript:
1
element.focus()
Zo kun je een element focus geven en wordt de focus code uitgevoerd.
Maar je kunt ook de onfocus instellen:
JavaScript:
1
element.onfocus = functionReference;

Leg eens wat meer / beter uit wat je bedoelt.

Verwijderd

ik snap je probleem niet helemaal

je hebt toch alleen maar te maken met die ene input? of er verder andere documenten aan te pas komen, boeit niet zo toch?

dus onfocus="this.value=''" moet genoeg zijn lijk me?

Verwijderd

Topicstarter
Wel, de bedoeling van mijn pagina is de typische content lay_out en behavior scheiding. dus wil ik vanuit mijn script een element-focus oproepen á la

code:
1
if (document.forms[0].elements[0].onFocus) {document.forms[0].elements[0].value=''}


oproepen om het desbetreffende inputelement leeg te maken. Nu staat er "Geef hier je trefwoord(en) in", en als je dus op het inputelement klikt of 'tabt' dan zou het element leeggemaakt worden, en dit het liefst zonder <input ... onFocus="this.value=''" /> als het mogelijk zou zijn.

[ Voor 9% gewijzigd door Verwijderd op 28-08-2005 20:00 ]


Verwijderd

ah zo
JavaScript:
1
2
3
document.forms[0].elements[0].onfocus = function() {
  this.value='';
}


dat kan met alle events zo

eigenlijk is netter om met addEventListener (dom 2) te werken, maar dan zit je weer met IE enzo, ik geloof (maar pin me er niet op vast) dat bovenstaande methode de dom 1 methode is.

[ Voor 56% gewijzigd door Verwijderd op 28-08-2005 20:11 ]


Verwijderd

Topicstarter
Thx ;)

Kan je ev. uitleg geven waarom het in een function staat ed ?
kan ik dit in de toekomst ook gepast gebruiken.
My guess: kan je this. aanroepen, maar waarom geen document.elements[0]. ... ?

Thx again, heb redelijk lang met dit prob rondgelopen _/-\o_

Verwijderd

staat in een function omdat onfocus een functie referentie (en geen value) nodig heeft, als attribuut gebeurt dit impliciet, maar hier dus expliciet. onfocus moet iets uitvoeren, het is dus een functie

die functie wordt uitgevoerd vanuit de scope van het object waar ie aan vast hangt, in dit geval dus je input, dus this.value slaat op de value van die input. Je zou ook "window.document.forms[0].elements[0].value" kunnen gebruiken, maar dan ga je onnodig "buitenlangs"

Verwijderd

Topicstarter
Bedankt, khad het misschien gevonden als ik beter de onFocus() FUNCTIE besturdeerd had dus 8)7 ach, heb vandaag dus weer iets bijgeleerd.
:9

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 20:48
Het is soms handiger om het veld alleen leeg te maken als je de standaardwaarde er in hebt staan:
JavaScript:
1
2
3
4
5
document.forms[0].elements[0].onfocus = function() {
  if(this.value==this.defaultValue) {
    this.value='';
  }
}

[ Voor 10% gewijzigd door djluc op 28-08-2005 23:47 ]

Pagina: 1