jquery onclick wird doppelt ausgeführt

vandamp

Erfahrenes Mitglied
Hallo,

ich hab eine form, die ich mit einem onclick Event einen ajax Aufruf macht.
Dieser Aufruf prüft mal ob z.b das Captcha stimmt usw. und schreibt die Daten wenn alles passt in einen DB.

Wenn etwas nicht stimmt gibt es z.b "Captcha falsch" zurückund der User kann dann das Captcha ausbesser, aber wenn er dann nochmal das onclick Eventauslöst, wird das onclick Event doppelt ausgeführt - somit dann auch doppelt eingetragen.

Ich hoff ihr versteht, was ich damit meine.
Denke ich mache beim Aufrufen etwas falsch onclick="postgbeintrag();"

meine form
PHP:
<form method="post" name="gb" id="gb">
<table width="500px" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FEE064">
  <tr>
    <td colspan="4" align="center"><b>Dein Eintrag:</b><br/><br/><br/></td>
  </tr>
 </tr>
  <tr>
    <td width="100"><b>Name:&nbsp;</b></td>
    <td colspan="3"><input type="text" id="name" name="name" size="25"></td>
  </tr>
  <tr>
    <td valign="top"><b>Text:&nbsp;</b></td>
    <td colspan="2"><textarea id="beitrag" name="beitrag" cols="45" rows="10"> </textarea></td>
    <td width="154" valign="top"></td>
  </tr>
  <tr>
    <td valign="top"><b>Captcha:</b><br/>(Spamschutz)</td>
    <td valign="top" width="100">
	<img src="captcha.php?'.session_id().'" width="100px" height="30px" alt="Bild-Captcha" />
	</td>
    <td valign="top" width="146"><input id="captcha" name="captcha" type="text" maxlength="5" size="8" /></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td colspan="3"><br/><input type="submit" name="eintrag" value="Abschicken" onclick="postgbeintrag();">&nbsp;<input type="reset" name="reset" value="L&ouml;schen"></td>
  </tr>
</table>
</form>


js, dass aufgerufen wird
Code:
function postgbeintrag(){
			$("form#gb").submit(function(){
				$.post("ajax.php",{
							name: $("#name").val(),
							beitrag: $("#beitrag").val(),
							captcha: $("#captcha").val(),
							action: "postgbeintrag"
						}, function(response) {$("#reply").html(response)});
				return false;
			});
		};

PHP:
if($action == 'postgbeintrag')
{
//captcha check
if($captcha_check['captcha_captcha'] == "")	 { 
echo'response captcha falsch';
exit();
}
//beitrag + name sollte mindestens da sein
if(empty($beitrag) or empty($name)){ 
echo'response beitrag und name leer';
exit();
}
// eintragen
echo 'eintrag eingetragen';
exit();
}
 
Beim ersten Klick fügst du einen Handler für das submit-Ereignis hinzu. Beim zweiten Klick wird dieser zusätzlich ausgeführt.
 
kannst du mir nen Tipp nennen, wie ich es so machen kann, dass er nicht hinzugefügt wird?

liegt es an dem return false; im js?
 
Einfach so:

Javascript:
function postgbeintrag(){
    $.post("ajax.php",{
        name: $("#name").val(),
        beitrag: $("#beitrag").val(),
        captcha: $("#captcha").val(),
        action: "postgbeintrag"
    }, function(response) {$("#reply").html(response)});

    return false;
};

Aber normalerweise würdest du den Handler vornherein über jQuery binden und nicht im Dokument.
 
ah danke klappt,

du meinst normal macht mans einfach so

Code:
$("form#gb").submit(function(){
                $.post("ajax.php",{
                            name: $("#name").val(),
                            beitrag: $("#beitrag").val(),
                            captcha: $("#captcha").val(),
                            action: "postgbeintrag"
                        }, function(response) {$("#reply").html(response)});
                return false;
            });

ohne onclick event
 
ah danke klappt,

du meinst normal macht mans einfach so

Code:
$("form#gb").submit(function(){
                $.post("ajax.php",{
                            name: $("#name").val(),
                            beitrag: $("#beitrag").val(),
                            captcha: $("#captcha").val(),
                            action: "postgbeintrag"
                        }, function(response) {$("#reply").html(response)});
                return false;
            });

ohne onclick event

Genau so meinte ich das.
 

Neue Beiträge

Zurück