Toon posts:

[js] wijziging-controle bij verlaten pagina?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wanneer de gebruiker van een intranet-systeem een formulier heeft ingevuld en deze pagina verlaat zonder op de opslaan-button te drukken, wil ik graag dat er een melding komt die vraagt om de ingevoerde gegevens alsnog op te slaan.

Dacht zelf aan een variabele die 0 is wanneer er nix gewijzigd is en die 1 wordt gemaakt wanneer er wel iets gewijzigd wordt. Door middel van een onExit kan ik dan de waarde van de variabele uitlezen en een melding geven.

Dit werkt echt niet makkelijk omdat ik bij elk inputveld een onChange moet plaatsen om de variabele van waarde te veranderen.

Weet iemand een andere, sneller manier om dit op te lossen??

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
stom idee: Kun je een onChange niet op je form zetten? Weet ik eigenlijk niet, zou ik effe na moeten kijken...

Is maar een idee.

/edit/
Nee, werkt niet volgens mij....

[ Voor 17% gewijzigd door RobIII op 31-01-2003 13:45 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
nee werkt idd niet, je wijzigt namelijk iets in form-elementen en niet in het form zelf

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
ja, maar ik dacht omdat de form een parent is van die elementen dat 'ie misschien toch op de hoogte werd gehouden van onChange events... (You never know ;) ) Ben bang dat je dan toch overal onchange op moet gooien.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

En bij onLoad al die velden in variabele stoppen en met die onExit methode nogmaals checken of de velden veranderd zijn?

Zodra een van de twee entries niet matchen weet je dat er wat veranderd is in je formulier.

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.


Verwijderd

Topicstarter
Ja, zou best kunnen BtM909, maar dan moet je toch nog overal die onChange bijdoen of niet? Misschien begrijp ik je bedoeling verkeerd.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Nope, het onchange event wordt namelijk niet gefired bij het verlaten van de pagina, dus daar heb je niets aan.

Je zal idd zoals BtM909 zegt bij onload de form-waarden in een array moeten stoppen en bij onunload (onexit? nooit van gehoord ;)) die form-waarden moeten checken met de oude waarden.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:59

crisp

Devver

Pixelated

drm schreef op 31 January 2003 @ 14:12:
Nope, het onchange event wordt namelijk niet gefired bij het verlaten van de pagina, dus daar heb je niets aan.

Je zal idd zoals BtM909 zegt bij onload de form-waarden in een array moeten stoppen en bij onunload (onexit? nooit van gehoord ;)) die form-waarden moeten checken met de oude waarden.
onunload gaat ook niet werken; dat event is namelijk niet te cancellen. Je kan wel (maar is IE-only) onbeforeunload gebruiken.

Intentionally left blank


Verwijderd

Topicstarter
Sorry, misschien begrijp ik jullie niet goed, maar die operatie duurt toch behoorlijk lang of niet. Dan was mijn eerste oplossing nog sneller, toch?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

crisp:
onunload gaat ook niet werken; dat event is namelijk niet te cancellen. Je kan wel (maar is IE-only) onbeforeunload gebruiken.
Klopt, maar het cancellen hoeft niet perse, lijkt mij. Je zou 't gewoon met een popupje op kunnen lossen waar je de juiste form-waarden naartoe stuurt. Als daar een ja en een nee knopje in staat (waarbij nee het popupje sluit, en ja de wijzigingen doorvoert) dan ben je d'r ook vanaf...

Daar zou ik eerder voor kiezen dan een ie-only event :)
edit:
droijen:
Sorry, misschien begrijp ik jullie niet goed, maar die operatie duurt toch behoorlijk lang of niet. Dan was mijn eerste oplossing nog sneller, toch?
Ja, dat kan wel zo zijn, maar zoals ik al zei: een onchange event wordt niet gefired als je het window afsluit. Dan moet je eerst je change "committen" door de focus van 't form field af te halen... Probeer 't maar :)
code:
1
2
3
<body onunload="alert ( 'unload' );">
   <textarea name="sjaak" onchange="alert ( this.name )"></textarea>
</body>

Probeer maar 's wat in dat textfield te zetten, en zonder dat je nog wat anders doet je venster te sluiten. Je zal zien dat je alleen een 'unonload' melding krijgt :)

[ Voor 41% gewijzigd door drm op 31-01-2003 14:23 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
You're right drm :) maar toch moet het op de een of andere manier toch makkelijker kunnen.

Hoop ik tenminste, haha :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

waarom? Zo lastig is dat toch niet? Laat eens zien wat je kan, zou 'k zeggen ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

drm schreef op 31 January 2003 @ 14:12:
(onexit? nooit van gehoord ;))
OnExit is volgens mij zo'n enge vb(a) / vbscript term :/
;)

Ik refereerde trouwens naar de TS.
...Door middel van een onExit kan ik dan de waarde van de variabele uitlezen en een melding geven...

[ Voor 34% gewijzigd door BtM909 op 31-01-2003 15:23 ]

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.


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Kun je niet gewoon het gehele FORM object in het begin klonen.. en dan (crisp>) bij een onbeforeunload die objecten vergelijken :? Lijkt mij zo 1, 2, 3 de makkelijkste methode die ik zo kan bedenken..

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Of je nou het form object kloont of alle form-waarden opslaat, dat komt natuurlijk in feite op 't zelfde neer. (hoewel mijn voorkeur naar 't laatste uit zou gaan, waarom zou je andere properties van 't form ook willen klonen?)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Kijk als een gebruiker de pagina verlaat door op het kruisje rechtsboven in te klikken, is het zijn eigen keus dat hij alles afsluite en weet hij waarschijnlijk dat hij de paginas die hij niet opslaat, gewoon verliest...

Doet hij dit via een andere url in de addressbar, zelfde verhaal...

Navigeert hij door middel van elementen in je site, kan je dit natuurlijk altijd ondervangen door onclick e.d....

/me is geen voorstander van onunload nl...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

weet hij waarschijnlijk dat hij de paginas die hij niet opslaat, gewoon verliest
Die "waarschijnlijk" is het probleem. Er is niets mis met je gebruikers een beetje opvoeden, imho.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1