Ein Event von mehreren Stellen aufgerufen

  • JavaScript

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Manü.

    Ein Event von mehreren Stellen aufgerufen

    Ahoi,

    ich habe auf einer Seite 3 Möglichkeiten sich für einen Newsletter anzumelden (fragt nicht ;)).
    Den Aufruf auf das PHP-Script will ich asynchton via Ajax machen.
    Mein Problem dabei ist, dass es nur eine Funktion gibt um den Aufruf zu starten.

    HTML-Quellcode

    1. $(document).ready(function(){
    2. $('.newsletter-send').click(function (){
    3. $('.newsletter-form').submit();
    4. });
    5. $('.newsletter-form').submit(function(){
    6. $.ajax({
    7. type: "POST",
    8. url: $(this).attr('action'),
    9. data: $(this).serialize(),
    10. dataType: "json",
    11. success: function(data){
    12. console.log(this);
    13. var output = "<div class='col-xs-6 col-xs-offset-3 label label-" + data[0] + "'>" + data[1] + "</div>";
    14. $('#result_message').html(output);
    15. },
    16. error: function(jqXHR, textStatus, errorMessage){
    17. console.log(errorMessage);
    18. }
    19. });
    20. return false;
    21. });
    22. });

    Der Aufruf wird aber nun 3 mal durchgeführt, da die Klassen natürlich auch 3 mal vorhanden sind.
    Mir fällt dabei nichts ein, wie ich das ganze entweder noch separieren könnte (natürlich ohne für jede der 3 Formen einen eigenen Aufruf zu starten) ,
    oder die anderen Aufrufe blockiere.
    Natürlich wird auch nur an einer Stelle das Result ausgegeben.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Falls jemand bei dem Problem auch mal nicht auf eine Lösung kommt.
    Ich habe mir eine Function erstellt, der die ID der Form übergeben wird und welche beim Button type="submit" aufgerufen wird.

    HTML-Quellcode

    1. ​<form id="form1" ...><button type="submit" onclick="regNewsletter"></form>


    HTML-Quellcode

    1. <script type="text/javascript">
    2. function regNewsletter(formId)
    3. {
    4. $('#' + formId).submit(function(){
    5. $.ajax({
    6. type: "POST",
    7. url: $(this).attr('action'),
    8. data: $(this).serialize(),
    9. dataType: "json",
    10. success: function(data){
    11. console.log(this);
    12. var output = "<div class='col-xs-6 col-xs-offset-3 label label-" + data[0] + "'>" + data[1] + "</div>";
    13. $('#result_message').html(output);
    14. },
    15. error: function(jqXHR, textStatus, errorMessage){
    16. console.log(errorMessage);
    17. }
    18. });
    19. return false;
    20. });
    21. }
    22. </script>
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de