Jquery popup sluit te vroeg

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Pagina: 1 2 volgende »

Arend b

arend b

30/07/2012 18:45:43
Quote Anchor link
beste forumleden,

ik loop vast met een stukje jquery. als je op een link klikt dan open zich een popup div waarin ik een formulier include, tot hier geen problemen. alleen wanneer ik het formulier verzend dan sluit hij de popup div. Het formulier geeft een melding van verzonden of niet verzonden en deze zie je wanneer je weer op de link klikt om de popup te openen.

Mijn vraag is dus als volgt:
Hoe kan ik zorgen dat de popup alleen maar sluit wanneer ik op het kruisje klik en niet wanneer het formulier is verzonden?

hier de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//SETTING UP OUR POPUP
//0 means disabled; 1 means enabled;

var popupStatus = 0;
//loading popup with jQuery magic!

function loadPopup(){
//loads popup only if it is disabled
    if(popupStatus==0){
        $("#backgroundPopup").css({
        "opacity": "0.7"
        });
        $("#backgroundPopup").fadeIn("slow");
        $("#popupContact").fadeIn("slow");
        popupStatus = 1;
    }
}

//disabling popup with jQuery magic!
function disablePopup(){
//disables popup only if it is enabled
    if(popupStatus==1){
        $("#backgroundPopup").fadeOut("slow");
        $("#popupContact").fadeOut("slow");
        popupStatus = 0;
    }
}

//centering popup
function centerPopup(){
    //request data for centering
    var windowWidth = document.documentElement.clientWidth;
    var windowHeight = document.documentElement.clientHeight;
    var popupHeight = $("#popupContact").height();
    var popupWidth = $("#popupContact").width();

    //centering
    $("#popupContact").css({
        "position": "absolute",
        "top": windowHeight/2-popupHeight/2,
        "left": windowWidth/2-popupWidth/2
    });
    //only need force for IE6
    $("#backgroundPopup").css({
        "height": windowHeight
    });
}

//CONTROLLING EVENTS IN jQuery
$(document).ready(function(){
//LOADING POPUP
//Click the button event!
$("#button").click(function(){
    //centering with css
    centerPopup();
    //load popup
    loadPopup();
});

//CLOSING POPUP
//Click the x event!
$("#popupContactClose").click(function(){
    disablePopup();
});

//Click out event!
$("#backgroundPopup").click(function(){
    disablePopup();
});

//Press Escape event!

$(document).keypress(function(e){
    if(e.keyCode==27 && popupStatus==1){
    disablePopup();
}
});
});
 
PHP hulp

PHP hulp

26/04/2024 07:19:21
 
Eddy E

Eddy E

30/07/2012 18:56:24
Quote Anchor link
Dat staat niet in dit stukje code.
Er moet meer zijn. Geef je formulier eens en het liefst een online voorbeeld.
 
Arend b

arend b

30/07/2012 19:28:27
Quote Anchor link
een online voorbeeld is hier te vinden

ik wilde niet te veel code hier plaatsen omdat het meeste niet relevant is voor de vraag.
 
Nick Dijkstra

Nick Dijkstra

30/07/2012 20:20:18
Quote Anchor link
Waarom gebruik je niet gewoon bijvoorbeeld fancybox?
 
Arend b

arend b

30/07/2012 20:22:14
Quote Anchor link
ik vond het wel leuk om deze te gebruiken en niet verder gekeken.
Ik wil eigenlijk deze popup blijven gebruiken als de fout eruit gaat
 
Eddy E

Eddy E

30/07/2012 22:09:47
Quote Anchor link
Er gaat trouwns ook wat fout in je broncode.
Open je website, druk op CTRL + U.
En dan zie je dit:

<php
?>
<!DOCTYPE html>
<html>
<head>


Lijkt me niet de bedoeling ;).



Maar... de oorzaak is eigenlijk heel simpel:
Dit is je formulier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form action="" ........


Dus bij 'verzenden' gaat hij naar dezelfde pagina (en ververst hij dus).
Wat jij wilt is dat Javascript de verzendknop uitschakeld (return false;) en dan via AJAX toch verstuurd oid.
Gewijzigd op 31/07/2012 12:42:28 door Eddy E
 
Arend b

arend b

01/08/2012 16:09:01
Quote Anchor link
Ik heb het html gedeelte verbeterd. Maar iemand een idee hoe ik het oplos met de popup?
 
Obelix Idefix

Obelix Idefix

01/08/2012 16:31:12
Quote Anchor link
Zie verschillende keren disablePopup(); staan.
Daar al eens wat mee 'getest'?
 
Arend b

arend b

02/08/2012 00:38:21
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
//Post return php in popupscreen
jQuery('#popupContact').submit(function() {
    jQuery.ajax({
        type: "POST",
        url: "contact.php",
        success: function() {loadPopup();}
    });
});


ik heb nu dit toegevoegd aan mijn js bestand maar helaas werkt dit niet
iemand een idee hoe ik de respons van het phpformulier opvang?
 
Kris Peeters

Kris Peeters

02/08/2012 09:56:29
Quote Anchor link
Is er iets van javascript dat werkt?
Mijn developer tools zeggen me dat je jQuery bestand corrupt is.

Kan je dit:
http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js


vervangen door dit:
https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js

en eens zien of dit iets verandert?
 
Eddy E

Eddy E

02/08/2012 10:55:11
Quote Anchor link
Zeker doen.
Hoe 'nieuwer' hoe beter. Wellicht zat .ajax() nog niet in 1.2.6
 
Arend b

arend b

02/08/2012 17:11:41
Quote Anchor link
kris ik heb het aangepast. dank je voor het vermelden
ik heb nu de code veranderd en deze werkt in IE en in Chrome maar niet in firefox. Dit vind ik raar om dat jquery in alle browsers hetzelfde moet werken
ik hoop dat jullie kunnen kijken waar de fout zit voor firefox.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Post return php in popupscreen
$('#contactForm').submit(function() {
        $.ajax({
        type: "POST",
                data : $(this).serialize(),
                cache: false,
                url: "contact.php",
                success: function(data){
                    $("#popupContact").html(data);
                        popupStatus = 1;
            }
        });
    return false;
});
 
Arend b

arend b

03/08/2012 19:51:17
Quote Anchor link
Een ander probleem is ook na een post het sluiten van de div niet meer werkt met de X. Met de escape toets en naast de div klikken werkt wel gewoon.. Iemand een idee
 
Jurgen B

Jurgen B

03/08/2012 20:04:22
Quote Anchor link
Vervang
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$("#popupContactClose").click(function(){
    disablePopup();
});

door
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$("#popupContact").on('click', '#popupContactClose', disablePopup);

Op deze manier koppel je een click event listener aan #popupContact (deze div blijft altijd bestaan), die wacht op een klik van de gebruiker op #popupContactClose. Op dit moment wordt de inhoud van je #popupContact geleegd door de ajax call, waarna #popupContactClose opnieuw wordt aangemaakt. De eerdere event listener ziet dit echter niet als dezelfde link en werkt dan niet meer.
Gewijzigd op 03/08/2012 20:12:40 door Jurgen B
 
Arend b

arend b

04/08/2012 11:38:18
Quote Anchor link
bedankt jurgen het werkt inderdaad ook bedankt voor je uitleg.
het probleem met firefox is ook opgelost. Zonder iets aan de code te hebben veranderd.

hopelijk de laatste vraag.
de popup blijft na de eerste keer submit gewoon open en hij geeft de respons
maar een tweede keer dan sluit de popup alsnog.

dit kun je testen door gelijk op submit te drukken en dan nog eens een keer
 
Jurgen B

Jurgen B

04/08/2012 17:25:06
Quote Anchor link
Blijkbaar krijg je in de return van je AJAX call geen formulier naam terug. Het formulier is naamloos na het doen van een submit, waardoor de event handler niet meer werkt. Waarom hij dan exact terugspringt naar gewoon scherm weet ik zo even niet, maar kijk iig eens naar je formulier id die je terug krijgt in de AJAX call, die mist namelijk!
 
Arend b

arend b

05/08/2012 00:48:46
Quote Anchor link
je hebt gelijk ik heb het veranderd maar het veranderd gek genoeg niets
 
Yoop Overmaat

Yoop Overmaat

05/08/2012 04:38:03
Quote Anchor link
Tijd om er een truuk er op loslaten.

<form>
//bla
//bla
<input type="submit" value="Blablablahh" onclick="window.close()">
</form>

Geheid dat wel werkt.
Gewijzigd op 05/08/2012 04:39:21 door Yoop Overmaat
 
Jurgen B

Jurgen B

05/08/2012 12:51:41
Quote Anchor link
Je hebt daar eigenlijk hetzelfde probleem als met de close knop. Je form wordt opnieuw geladen dus de event handler reageert niet op het nieuwe formulier. Je kan dit oplossen door eveneens on() te gebruiken (maar nu op de submit knop zelf), en in de callback het formulier te submitten ($('#contactForm').submit()), of door alleen de inhoud van het formulier via ajax te verwerken in plaats van het complete formulier opnieuw op te halen.

Dus in eerste geval iets als (niet getest, maar dit zou moeten werken...)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$("#popupContact").on('submit', function() {
     //De rest van je code
});
Gewijzigd op 05/08/2012 12:57:22 door Jurgen B
 
Arend b

arend b

05/08/2012 14:14:22
Quote Anchor link
hey jurgen bedankt dit werkt het formulier blijft staan alleen hij krijgt nu niet de waardes van het php bestand terug. dus heb je een naam ingevuld dan onthield hij deze eerst en nu krijg je een textbox terug.

maar tot nu toe heel erg bedankt voor je hulp
 
Jurgen B

Jurgen B

05/08/2012 15:06:29
Quote Anchor link
Ehm vreemd.. Heb niet veel ervaring m.b.t Ajax icm JQuery icm formulieren. Als hij eerst wel werkte neem ik aan dat het script dus wel het juiste form teruggeeft, maar het lijkt erop dat hij dus geen waardes meer meegestuurd krijgt...

Het zit hem in 'data: $(this).serialize()' omdat $(this) nu naar #popupContact verwijst in plaats van het formulier. Je moet $(this) naar $('#contactForm') wijzigen, dan lijkt het hier te werken.
Gewijzigd op 05/08/2012 15:08:33 door Jurgen B
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.