Toon posts:

[JS] Posten naar popup gebeurt twee keer?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik post naar een popup op de volgende manier:


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script type='text/javascript'>
function initChat()
{
    var chatform = document.forms['chat_loginform'];
    
    if(validateForm(chatform,false,false,false,false,8))
    {
        var chat_popup = window.open('', 'chat_popup', 'scrollbars=0,menubar=0,resizable=0,width=770,height=570');
        return chatform.submit();
    }else
    {
        return false;
    }
}

</script>

<form name="chat_loginform" method="post" action="chatinit.php" target="chat_popup" onSubmit="return initChat();">

De functie validateForm() gebruik ik om het formulier te valideren. De rest is vrij basic lijkt me. Het probleem is dat wanneer ik submit, de pagina 'chatinit.php' in Internet Explorer twee maal uitgevoerd wordt, met dezelfde post-request. Dit blijkt uit het feit dat er twee keer dezelfde query uitgevoerd wordt. In Firefox wordt er wel gewoon maar 1 keer gerequest.

Is dit een fenomeen dat vaker optreed? Is er iets tegen te doen?

Verwijderd

Topicstarter
Ok ik zie het probleem nu zelf ook. Ipv return submit() moet er een return false gedaan worden omdat anders het formulier nog een keer submit. Logisch...

Verwijderd

Als ik me niet vergis zit het probleem "return chatform.submit();"
Hiermee submit je het form vanuit javascript. Vervolgens wordt de uitkomst hiervan als return-waarde gebruikt. Omdat deze waarde niet nul is, wordt vervolgens ook de "normale" submit uitgevoerd.

edit:
Je was zelf sneller, wel vreemd dat het in firefox wel werkt trouwens!

[ Voor 19% gewijzigd door Verwijderd op 13-03-2005 16:21 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

waarom de submit met javascript doen?
Dit zou ook gewoon moeten werken vanwege de target in je form-element (en meteen even je submithandler wat netter gemaakt):
HTML:
1
<form method="post" action="chatinit.php" target="chat_popup" onsubmit="return initChat(this);">

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function initChat(chatform)
{
    if (validateForm(chatform,false,false,false,false,8))
    {
        window.open('', 'chat_popup', 'scrollbars=0,menubar=0,resizable=0,width=770,height=570');
        return true;
    }
    else
    {
        return false;
    }
}

Intentionally left blank