Toon posts:

[JS / HTML] pop-up: OK Cancel

Pagina: 1
Acties:
  • 168 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een pagina waarop ik een bepaalde actie (enkele records bijwerken) laat uitvoeren (via PHP). Nadat deze actie is uitgevoerd wil ik een scherm tonen met OK en Cancel. Bij het drukken op OK wordt de pop-up gesloten en gebeurt er niets. Wanneer er op Cancel wordt gedrukt dan wordt de actie teruggedraaid (records bewerken weer ongedaan gemaakt).

De enige mogelijkheid hiervoor leek me een aparte html pagina met daarop een vraag en de knoppen OK en Cancel. Ik vraag me echter af wat hiervoor de beste aanpak is.

Het lijkt mij dat het het beste is om gebruik te maken van javascript. Als ik echter
window.showModalDialog
gebruik dan wordt de pop-up tegengehouden door een popup-blokker.
Als ik
window.open
gebruik dan krijg wordt de pop-up niet geblokt. Deze laatste lijkt mij dus de voorkeur te hebben?

Bij beiden kan ik echter geen gebruik maken van de knoppen op de pop-up. Als ik op Ok of Cancel klik krijg ik de volgende melding van mijn Apache server (die draai ik hier lokaal op mijn test server):

Method Not Allowed
The requested method POST is not allowed for the
URL hier staat de url
---------------------------------------------------
Apache/1.3.33

Dit leek mij in het geval van window.showModalDialog te verklaren door het feit dat de pagina die de popup aanvraagt nog niet uitgeladen is (omdat eerst de dialog afgehandeld moet worden voordat deze verder laadt). Ik snap echter totaal niet waarom ik deze melding ook krijg wanneer ik met window.open werk?!

Verder vroeg ik me nog af hoe ik het beste het resultaat terug kan communiceren vanaf de pop-up naar de pagina die de pop-up laat verschijnen. Ik zat te denken aan het zetten van een sessievariabele waarop gecontroleerd wordt bij het laden van de pagina die de pop-up aanvraagt.

Deze zou ik dan eventueel kunnen laten herladen via javascript vanaf de pop-up. Dit lijkt mij zelfs niet nodig als ik met een dialog werk en het gedeelte dat op de sessievariabele checkt na de aanvraag van de dialog komt, vat ik dit goed op?

Wellicht dat mijn werkwijze wel helemaal omslachtig, onhandig of zelfs onveilig is, ik heb namelijk geen ervering met pop-ups in html. Alle feedback is dus welkom!!

  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 15:02

Exterazzo

Qeasy

Dat kan gewoon makkelijk met JavaScript:

JavaScript:
1
2
3
4
5
6
7
8
9
10
if (confirm("Bericht"))
{
    // Doe iets bij OK
    alert('ok');
}
else
{
    // Doe iets bij Cancel
    alert('cancel');
}

[ Voor 24% gewijzigd door Exterazzo op 04-03-2006 20:03 ]

Audentia


  • Hobbles
  • Registratie: Augustus 2004
  • Laatst online: 04-04 17:51
Bij het drukken op OK wordt de pop-up gesloten en gebeurt er niets. Wanneer er op Cancel wordt gedrukt dan wordt de actie teruggedraaid (records bewerken weer ongedaan gemaakt).
Exterazzo heeft gelijk, maar ik vind het een beetje een rare werkwijze. Ik zou de veranderingen pas doorvoeren nadat de gebruiker op OK klikt, en niets doen als die op cancel duwt. Als de gebruiker nu het venster wegklikt, wat logischerwijs gelijk is aan op cancel te klikken, word de OK-actie uitgevoerd.

Ik hoop dat je er wat aan hebt ;)

Everything is possible if you really want it.


Verwijderd

Topicstarter
Bedankt voor de reacties. Ik vraag me alleen of hoe ik nu de acties moet koppelen aan de keuze van de gebruiker. Het is namelijk de bedoeling om php code uit te voeren als er op OK of Cancel wordt gedrukt.

Ik kan toch niet vanuit javascript terug naar PHP om de code uit te laten voeren? Dit kan toch nooit omdat javascript aan de client zijde draait en PHP aan de server zijde?

  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 15:02

Exterazzo

Qeasy

Verwijderd schreef op zondag 05 maart 2006 @ 12:16:
Bedankt voor de reacties. Ik vraag me alleen of hoe ik nu de acties moet koppelen aan de keuze van de gebruiker. Het is namelijk de bedoeling om php code uit te voeren als er op OK of Cancel wordt gedrukt.

Ik kan toch niet vanuit javascript terug naar PHP om de code uit te laten voeren? Dit kan toch nooit omdat javascript aan de client zijde draait en PHP aan de server zijde?
Je kunt met Javascript gewoon een PHP pagina aanroepen.
JavaScript:
1
2
3
4
5
6
7
8
if (confirm("Wilt u deze actie bevestigen?"))
{
    window.location = 'opslaan.php';
}
else
{
    window.location = 'verwijderen.php';
}

Audentia


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Verwijderd schreef op zondag 05 maart 2006 @ 12:16:
Bedankt voor de reacties. Ik vraag me alleen of hoe ik nu de acties moet koppelen aan de keuze van de gebruiker. Het is namelijk de bedoeling om php code uit te voeren als er op OK of Cancel wordt gedrukt.

Ik kan toch niet vanuit javascript terug naar PHP om de code uit te laten voeren? Dit kan toch nooit omdat javascript aan de client zijde draait en PHP aan de server zijde?
Je kunt je php-pagina aanroepen als er op ok geklikt wordt.

Bijvoorbeeld:
Je hebt een formulier met daarin een aantal velden die je wilt versturen, maar omdat er wijzigingen aangebracht gaan worden in je db, wil je eerst een extra toestemming hebben. Aangezien het om een beheeromgeving gaat, kun je verlangen dat Javascript aan moet staan.

Je maakt dan heel mooi een formuliertje (let op: als er veranderingen aangebracht worden (dus niet alleen lezen) in je systeem, moet je eigenlijk POST gebruiken, om problemen met spiders (ok, officieel moeten die er niet kunnen komen) en programma's als Google WebAccelerator te voorkomen). Hieronder staat een voorbeeldje:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form method="post" action="uri-here.php" onsubmit="return formCheck();">
  <input type="hidden" name="var1" id="var1" value="">

  <table>
    <thead>
      <tr>
        <th>...</th>
        <th>...</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>waarde 1</td>
        <td><input type="submit" name="mySubmitButton" value="verwijderen" onclick="setValue( 'waarde 1' )">
      </tr>
       <!-- ..... nog een heleboel rijen ..... -->
    </tbody>
</form>


Java:
1
2
3
4
5
6
7
8
9
10
11
12
function formCheck(){
  if( document.getElementById( "var1" ).value == "" ){
    alert( 'U heeft nog geen keuze gemaakt' );
    return false;
  };

  return ( confirm( 'Weet u zeker dat u '+ document.getElementById( "var1" ).value + ' wilt  verwijderen?' ) ) ? true : false;
};

function setValue( value ){
  document.getElementById( "var1" ).value = value;
};


ff snel uit mn hoofd geklopt en niet getest, maar zo een idee kun je gebruiken.

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


Verwijderd

Topicstarter
Bedankt! Ik kom er wel uit nu!
Pagina: 1