2016-03-19 6 views
0

Ich habe mehrere Formulare, die zur Laufzeit von einer Vorlage-Engine generiert werden, um eine Ajax-Anfrage auf ihre Einreichung zu generieren habe ich die "on" -Methode verwendet Delegieren Sie das Ereignis.beim Senden von dynamisch generierten Formular, finden Sie die Schaltfläche zum Senden wurde geklickt

$("#friendRequestsList").on("submit", "[id^=friendReqResponse-form]", function(){ 
    var form = this; 
    $(form).ajaxSubmit({ 
     url:'URL', 
     type:'post', 
     dataType: 'json', 
     success: function(data) { 
      DO SOMETHING 
     } 

    }); 
    return false; 
}); 

Die Form hat Tasten 2 einreichen, und ich brauche zu erkennen, wer von ihnen angeklickt wurde und geben diese Information an die Ajax-Request. Allerdings fällt es mir schwer zu wissen, auf welche der Eingaben im Formular geklickt wurde, da sie auch dynamisch generiert wurden. Ideen?

+0

Hinzufügen glaube ich, wenn Sie eine Submit-Button zuweisen (der 'input' und nicht' button' Sorte, zumindest) einen Wert, Dieser Wert sollte zusammen mit den übrigen Daten des Formulars übergeben werden. Ich bin mir nicht sicher, wie hilfreich das sein könnte, wenn Sie die Formularschaltflächen, mit denen Sie arbeiten, nicht anpassen können. – Connor

+0

nein, sie sind beide "Eingabe" mit Typen übermitteln und anderen Werten, aber nur das Eingabefeld des Formulars wird als Formulardaten übergeben - wenn der Wert zusammen mit dem Rest der Formulardaten übergeben wurde, dann würde dies auch mein Problem lösen . – Alexjjsmith

+1

Entschuldigung, ich muss mich geirrt haben. In diesem Fall könnte ich vorschlagen, Click-Ereignishandler an die Schaltflächen zu binden, anstatt einen Submit-Ereignishandler an das Formular zu senden, falls dies möglich ist. Ist dies nicht der Fall, binden Sie möglicherweise ein click-Ereignis an das gesamte Formular, greifen jedoch über [jQuery's 'event.target'] (https://api.jquery.com/event.target/) auf das angeklickte Element zu und senden basierend darauf, was angeklickt wurde ? – Connor

Antwort

0

folgende Connors Vorschlag das Click-Ereignis der Verwendung statt einreichen, ich es geschafft haben, wie so die die Submit-Button zu bekommen:

$("#friendRequestsList").on("click", "[id^=submit1], [id^=submit2]", function(e) { 
    var input = this; 
    var form = $(input).parent(); 

    $(form).ajaxSubmit({ 
     url:'URL', 
     type:'post', 
     dataType: 'json', 
     success: function(data) { 
      DO SOMETHING 
     } 

    }); 
    e.preventDefault() 
}); 

natürlich würde dies nicht so gut funktionieren, wenn mein Formular Eingabefelder hätte, da es bei einer Formularübergabe von einem Tastendruck Enter nicht ausgelöst würde. Außerdem müssen Sie die Eingabe-Identifizierungsinformationen an die Ajax-Anforderung anhängen.

Ich tat dies, indem

data: {submit:input.value}, 

die ajaxSubmit Einstellungen

0

Ich hoffe, es wird Ihnen helfen:

$("#friendRequestsList").on("submit", "[id^=friendReqResponse-form]", function(){ 
    var submit1 = $(this).attr('value'); 

    var formData = new FormData(); 
    formData.append('submit1', submit1); 

    $.ajax({ 
     url:'URL', 
     type:'post', 
     data:formData, 
     dataType: 'json', 
     success: function(data) { 
      DO SOMETHING 
     } 

    }); 
    return false; 
}); 
+0

danke für Ihre Antwort, aber ich denke nicht, dass das funktionieren wird. submit1 wird ein undefinierter Wert zugewiesen, der nicht auf die Schaltfläche zum Senden verweist – Alexjjsmith

Verwandte Themen