Toon posts:

[js] confirm en form.submit problemo

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil dat men een melding krijgt wanneer men een venster sluit en niet op submit geklikt heeft met de vraag of diegene de pagina nog op wil slaan.

Dit werkt allemaal lekker, alleen submit hij het form niet wanneer men toch besluit om de pagina op te slaan. Ik heb her en der al gezocht maar kom er niet uit. Zie ik wat doms over het hoofd?

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
Desbetreffende HTML:

<body onBeforeUnload="verwijder_temp()">
<form action="jump.php" method="post" name="form1" onsubmit="kopieer_volgorde(this); return controleer(this);">
<input type="submit" value="INVOEREN" name="submit" onclick="WaardeActie('invoeren');"></form>

Javascript:

function verwijder_temp()
{
    if (document.form1.actie2.value != "invoeren") 
    {
        if (confirm("Wilt u de wijzigingen in deze pagina opslaan?"))
        {
            alert("eens");
            document.form1.submit();
        }
        else
        {
            alert("oneens");
            window.showModalDialog('editor/verwijder_temp.php',null,'resizable:no;status:no;dialogWidth:100px;dialogHeight:100px;dialogTop: 0px; dialogLeft: 0px; dialogHide:yes; help:no; unadorned:no; scroll:no; display:none');
        }   
    }
}


Voor alle duidelijkheid, hij vraagt of ik wil opslaan. Alert ook de goede waarde (eens of oneens) maar wanneer ik wel wil opslaan, dan doet hij die document.form1.submit() niet. en komt hij niet bij onsubmit="kopieer_volgorde(this) en controleer(this)"

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

je komt uberhaupt nooit bij onsubmit als je je formulier via javascript submit...

het event wordt simpelweg niet getriggered.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:23

crisp

Devver

Pixelated

code:
1
name="submit"


ga die eens heel snel veranderen in een andere naam!

en inderdaad, de onsubmit wordt niet getriggered als je via JS submit; die twee functies moet je dus nog apart even aanroepen.

[ Voor 4% gewijzigd door crisp op 14-05-2003 17:00 ]

Intentionally left blank


Verwijderd

Topicstarter
ok dat is dan duidelijk. Vaag is het wel, je zou het wel verwachten namelijk. Hoe kan ik dan het form submitten?

Ik kan natuurlijk:
if (confirm("Wilt u de wijzigingen in deze pagina opslaan?"))
{
alert("eens");
kopieer_volgorde(document.form1);
return controleer(document.form1)
document.form1.submit();
}

aanroepen, maar dan submit hij nog steeds niet.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:23

crisp

Devver

Pixelated

Verwijderd schreef op 14 May 2003 @ 17:01:
ok dat is dan duidelijk. Vaag is het wel, je zou het wel verwachten namelijk. Hoe kan ik dan het form submitten?

Ik kan natuurlijk:
if (confirm("Wilt u de wijzigingen in deze pagina opslaan?"))
{
alert("eens");
kopieer_volgorde(document.form1);
return controleer(document.form1)
document.form1.submit();
}

aanroepen, maar dan submit hij nog steeds niet.
crisp schreef op 14 May 2003 @ 16:59:
code:
1
name="submit"


ga die eens heel snel veranderen in een andere naam!
zo duidelijker? ;)

edit:

en je controle zou ongeveer zo moeten dan:

JavaScript:
1
2
3
4
5
6
if (confirm("Wilt u de wijzigingen in deze pagina opslaan?"))
{
  alert("eens");
  kopieer_volgorde(document.form1);
  if (controleer(document.form1)) document.form1.submit();
}

[ Voor 58% gewijzigd door crisp op 14-05-2003 17:11 ]

Intentionally left blank


Verwijderd

kun je niet fireEvent gebruiken om de onSubmit te triggeren?

Verwijderd

Topicstarter
Zeker duidelijker :) maar levert helaas niks op. Hij submit hem nog steeds niet. Hij sluit gewoon de pagina nadat hij "eens" ge-alert heeft.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:23

crisp

Devver

Pixelated

Verwijderd schreef op 14 May 2003 @ 17:09:
Zeker duidelijker :) maar levert helaas niks op. Hij submit hem nog steeds niet. Hij sluit gewoon de pagina nadat hij "eens" ge-alert heeft.
is je PHP script toevallig ook afhankelijk van $_POST['submit'] (of $submit)?
Dan moet je dat ook veranderen, en er rekening mee houden dat een JS submit waarschijnlijk de waarde van je submit button niet meestuurd (net als wanneer je in IE met enter een form submit).

[ Voor 9% gewijzigd door crisp op 14-05-2003 17:13 ]

Intentionally left blank


Verwijderd

Topicstarter
Nee die is daar niet van afhankelijk. De submit knop zou eigenlijk niet eens een name attribuut hoeven hebben.

Ik klooi nog wel even verder.

[ Voor 14% gewijzigd door Verwijderd op 14-05-2003 17:14 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 13:29

momania

iPhone 30! Bam!

Verwijderd schreef op 14 mei 2003 @ 17:01:
ok dat is dan duidelijk. Vaag is het wel, je zou het wel verwachten namelijk. Hoe kan ik dan het form submitten?

Ik kan natuurlijk:
if (confirm("Wilt u de wijzigingen in deze pagina opslaan?"))
{
alert("eens");
kopieer_volgorde(document.form1);
return controleer(document.form1)
document.form1.submit();
}

aanroepen, maar dan submit hij nog steeds niet.
Wat doet die return daar? Heb je die al weggehaald, anders komt ie ook nooit bij de submit.

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Topicstarter
Jep:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function verwijder_temp()
{
    if (document.form1.actie2.value != "invoeren") 
    {
        if (confirm("Wilt u de wijzigingen in deze pagina opslaan?"))
        {
            alert("eens");
            kopieer_volgorde(document.form1);
            if (controleer(document.form1)) document.form1.submit();
        }
        else
        {
            alert("oneens");
            window.showModalDialog('editor/verwijder_temp.php',null,'resizable:no;status:no;dialogWidth:100px;dialogHeight:100px;dialogTop: 0px; dialogLeft: 0px; dialogHide:yes; help:no; unadorned:no; scroll:no; display:none');
        }   
    }
}

[ Voor 9% gewijzigd door Verwijderd op 14-05-2003 17:16 ]


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 21-08 17:05
Die onbeforeunload werkt niet op die manier.... Je krijgt weliswaar die confirm popup, maar hij quit toch gewoon...
Die onbefore werkt alleen goed met 'event.returnValue';
Probeer dit maar eens:

code:
1
2
3
4
5
6
7
8
9
10
<head>
<script language="JavaScript">
function closeIt(){
    event.returnValue = "Weet U het zeker?";
    alert('test');
  }
</script>
</head>
<body onbeforeunload="closeIt();">
</head>


Het is vreemd, maar de alert komt hier VOOR de popup met 'Weet U het zeker'. Maar alleen met de 'event.returnValue' kun je het 'sluiten van het venster echt voorkomen..

Dit werkt nml niet:
code:
1
2
3
4
5
6
7
<script language="JavaScript">
function closeIt(){
    if(!confirm("Weet U het zeker")){
        return(false);
    }
  }
</script>


Als je op annuleren klikt.. sluit het window toch....

:( :X

[ Voor 17% gewijzigd door beetle71 op 14-05-2003 17:27 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 13:29

momania

iPhone 30! Bam!

Dan zal de functie controleer wel false terug geven.
En zet even netjes accolades om "document.form1.submit();" heen, is wel zo netjes.

Neem je whisky mee, is het te weinig... *zucht*


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:23

crisp

Devver

Pixelated

beetle71 schreef op 14 mei 2003 @ 17:26:
Die onbeforeunload werkt niet op die manier.... Je krijgt weliswaar die confirm popup, maar hij quit toch gewoon...
[etc...]
oh, onbefureunload (overheen gelezen). Ja, die werkt zo niet nee.
Ik denk dat je het wel gewoon met onunload kan oplossen, maar dan zal je waarschijnlijk je form naar een popup ofzo moeten submitten als de gebruiker wegnavigeert of de browser sluit.

Intentionally left blank


Verwijderd

Topicstarter
[quote]beetle71 schreef op 14 mei 2003 @ 17:26:
Die onbeforeunload werkt niet op die manier.... Je krijgt weliswaar die confirm popup, maar hij quit toch gewoon...
Die onbefore werkt alleen goed met 'event.returnValue';

etc...

[quote]

Shit ja, dat is het inderdaad. Wel jammer dat hij niet met een normale return werkt en altijd het venster sluit.
Pagina: 1