2017-08-20 5 views
1

gut genannt werden, ich habe diesen jquery Beitrag:php-Archiv mehr als einmal

$('.form-submit').click(function(){ 

    var form = $(this).attr('data-form'); 

    $("#"+form).submit(function(e) { 

     e.preventDefault(); 
     $.ajax({ 
      url: "../assets/action/action.php", 
      type: "POST", 
      data: new FormData(this), 
      contentType: false, 
      cache: false, 
      processData:false, 
      success: function(data) 
      { 
       $(".return-post-msg").html(data); 
      } 
     }); 
    }); 
}) 

die Sache ist, seine Arbeit in Ordnung, aber wenn ich das Klicken button.form einreichen wieder, die jquery genannt werden einmal normal, jedoch die action.php Datei zweimal aufgerufen, und wenn ich noch einmal auf, 3x ... wenn clcik againx .. alles, was ich in meinem action.php habe, ist

echo "<script> alert('".$method." aaaaa'); </script>"; 

für die Prüfung, wie oft die Datei heißt ...

Hier ist der HTML:

  <form id="create_requisite"> 

       <input type="hidden" name="method" value="create_requisite" /> 

       <div class="modal-heading"> <!-- Start of modal-heading --> 

        <h3>Create Requisite</h3> 

       </div> <!-- End of modal-heading --> 

       <div class="modal-body"> <!-- Start of modal-body --> 

        <div class="form-group"> <!-- Start of form-group --> 

         <label>Requisite Name</label> 
         <input type="text" class="form-control input-primary" name="name_requisite" /> 

        </div> <!-- End of form-group --> 

       </div> <!-- End of modal-body --> 

       <div class="modal-footer"> <!-- Start of modal-footer --> 

        <span class="return-post-msg"></span> 
        <button class="btn btn-default form-submit" data-form="create_requisite">Create</button> 

       </div> <!-- End of modal-footer --> 

      </form> 

Kann mir jemand helfen?

+0

Sie möchten also die Schaltfläche deaktivieren, wenn Sie darauf klicken? Oder möchten Sie serverseitig prüfen, ob das Formular mehrfach eingereicht wurde? – slhck

+0

Ich möchte klicken, was auch immer ich will, aber immer wenn ich klicke, möchte ich nur einmal die action.php anrufen –

+0

Können Sie den relevanten HTML-Teil bitte teilen? Gibt es mehrere Formen? – JazZ

Antwort

1

Sie hören sowohl ein Klickereignis als auch ein Submit-Ereignis ab, das wahrscheinlich dazu führt, dass das Ereignis mehrmals ausgelöst wird. Hören Sie stattdessen einfach auf das Submit-Ereignis.

$(this).attr('data-form').on('submit', function(e) { 
    // make your ajax call 
}); 

Sie können auch .one() verwenden, während die Event-Handler deklarieren, so dass es immer nur das Ereignis einmal behandeln.

$(this).attr('data-form').one('submit', function(e) { 
    // make your ajax call 
}); 

Allerdings verwenden diese sorgfältig sonst Benutzer müssen möglicherweise die Seite nur aktualisieren, so dass sie etwas auf dem Formular beheben, nachdem sie versuchen, zu unterbreiten.

+0

konnte es nicht funktionieren mit Ihnen Beispiel. –