[JS/DOM] Tekstvak onChange

Pagina: 1
Acties:

  • erkje
  • Registratie: Oktober 2001
  • Laatst online: 12-06-2024
Het is een beetje een vreemd probleem, en ik weet ook niet of er überhaupt een oplossing voor is, maar ik zal het proberen uit te leggen:

Wat ik graag wil
Ik heb een tekstvak <input type=text etc> die door bepaalde user-acties automatisch gevuld wordt met een datum (die kan dus niet zelf ingevuld worden in dit tekstvak). Uiteindelijk komt er een datum in het formaat yyyy-mm-dd in het tekstvak te staan. Nu wil ik graag, zodra de inhoud van het tekstvak veranderd een functie aanroepen. Dus zoiets als:
code:
1
onChange="updateStartDate(this)"


Het probleem
De onChange voert code uit als het tekstvak de focus verliest en de inhoud veranderd is. In mijn situatie veranderd alleen de inhoud en niet de focus (omdat de gebruiker niets intypt).
Verder heb ik de onBlur, maar die voert alleen code uit als de focus verloren gaat.

The question
Nu vraag ik mij af: is er een event waarbij code uitgevoerd wordt als de inhoud veranderd wordt? En anders: kan ik zelf een event maken op een of andere manier?

taste and see that the Lord is good


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

onkeydown
onkeyup
onkeypress

[ Voor 16% gewijzigd door André op 10-11-2004 09:44 ]


  • DaRace
  • Registratie: Juni 2001
  • Laatst online: 03-10-2023
als door een useractie de inhoud veranderd, dan kun je vanuit de functie die dit doet toch updateStartDate() aanroepen?

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
als je de inhoud van een input aanpast zonder dat de gebruiker iets invoert dan ben je toch al met script bezig??? waarom roep je in dat script dan niet gewoon ook de functie aan???

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • erkje
  • Registratie: Oktober 2001
  • Laatst online: 12-06-2024
De user typt niet in dit vak, dus de onkeyup, etc. functies hebben geen zin.

Ik geef een kalender weer waarop de user kan klikken en die kalender vult dit vak uiteindelijk. Deze wordt gebruikt als een soort module en wordt op meerdere pagina's gebruikt. Ik kan dus niet vanuit mijn kalender deze functie gaan aanroepen, want dan zou dat op die andere pagina's ook gebeuren terwijl daar die functie niet bestaat.

[ Voor 7% gewijzigd door erkje op 10-11-2004 09:48 ]

taste and see that the Lord is good


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Dan moet je timer maken die elke 100ms controleert of de inhoud van het vak veranderd is.

  • erkje
  • Registratie: Oktober 2001
  • Laatst online: 12-06-2024
André schreef op 10 november 2004 @ 09:50:
Dan moet je timer maken die elke 100ms controleert of de inhoud van het vak veranderd is.
Meen je dat?

taste and see that the Lord is good


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Ja, als jij vanuit die kalender functie niets kunt zul je het op een andere manier moeten doen. En aangezien er niet gefocussed word op het vak zul je iets anders moeten verzinnen.

Wat eventueel wel kan in je kalenderscript is de focus op het vak zetten waar de datum in gezet word om hem daarna weer te blurren, dan word de onblur wel aangeroepen. En dat script zal ook op de andere pagina's werken waar je die kalender gebruikt.

code:
1
2
3
4
5
document.getElementById("bla").focus();
document.getElementById("bla").value = "Test";
document.getElementById("bla").blur();

<input type="text" name="bla" onblur="alert('oeps')">

[ Voor 25% gewijzigd door André op 10-11-2004 09:58 ]


  • erkje
  • Registratie: Oktober 2001
  • Laatst online: 12-06-2024
Okee André, dat ga ik eens proberen.

Thanks for your time!

edit:
Top! Werkt perfect! :Y)

[ Voor 50% gewijzigd door erkje op 10-11-2004 10:38 ]

taste and see that the Lord is good


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:00

crisp

Devver

Pixelated

En dit kan ook nog: gewoon kijken of er bv een onchange handler aan een object hangt, en die aanroepen vanuit script:
JavaScript:
1
2
3
var el = document.getElementById('tekstje');
el.value = 'w00t';
if (typeof el.onchange == 'function') el.onchange();

Intentionally left blank

Pagina: 1