2016-05-20 8 views
3

Ich verwende this sehr schön jQuery-Plugin bestätigen, Problem ist, ich Problem habe mit mit mehreren Tasten bestimmte Schaltfläche in Form einreichen, mein Code funktioniert in php side ohne jquery-confirm Plugin fein . Es kann einen genauen Wert für die Schaltfläche "Submit" erhalten, aber ich möchte eine Bestätigung erhalten, bevor ich sie abschicke. Unten ist mein Szenario:jquery-confirm - klickten Schaltfläche in Formular mit mehreren Tasten

Ich habe 2 löschen senden Schaltflächen in Einzelform und integriert mit jquery-confirm. Wenn ich auf bestimmte Schaltfläche Löschen klicken (18), ist es das ganze Formular abgesendet haben, was ich wollte nur die geklickt Taste, ist mein Code unten einreichen erlaubt ist:

<form action="" method="POST" id="messages"> 
<button type="submit" name="message_id" value="18" class="btn btn-danger confirmation" >Delete</button> 

<button type="submit" name="message_id" value="17" class="btn btn-danger confirmation" >Delete</button> 
</form> 

JQuery-Code:

$('.confirmation').confirm({ 
     content: 'Delete this message?', 
     title: 'Please confirm', 
     confirm: function(){ 
      $('#messages :submit').submit(); 
     } 
    }); 

Bisher habe ich versucht, mit this.$target.closest('#messages').submit();, mit Trigger ("klicken"), aber sie haben nicht wie erwartet funktioniert.

Wenn ich onclick="return confirm('Delete this message?');" innerhalb button hinzufügen, wird es Alarm-Box auslösen und die ausgewählte Schaltfläche wie erwartet, nicht die gesamte Formularübergabe senden. Was ich wollte, ist, den Wert der übermittelten Schaltfläche nur von PHP Seite zu bekommen, wenn der Button eingereicht wurde. Wenn ich auf eine bestimmte Löschtaste (Wert 18) klicke, kann ich den $_POST['message_id'] Wert = 18 ohne jquery-confirm Plugin abfangen. Aber wenn ich jquery-confirm mit submit() verwende, konnte es von PHP Seite keinen $_POST['message_id'] Wert fangen.

Meine jsfiddle für weitere Informationen:

+0

Also versuchen Sie zu nur eine Taste drücken? – Ponilz

+0

Könnten Sie bitte näher auf _Wenn ich auf bestimmte löschen Schaltfläche (18) klicken, senden Sie das ganze Formular, was ich wollte, ist nur die Schaltfläche angeklickt, um zu senden_ –

+0

können Sie jquery Code mit einem Klick auf die Schaltfläche Löschen und Bestätigung? Wenn vor dem Bestätigungscode das Click-Ereignis vorhanden ist, posten Sie es bitte. –

Antwort

0

fand ich eine Abhilfe versteckten Eingang mit geklickt message_id Mehrwert zu schaffen ist, so ist alles funktioniert jetzt in Ordnung, hier gepostet im Fall jemand anderes dies benötigt:

$('.confirmation').confirm({ 
     content: 'Delete this message?', 
     title: 'Please confirm', 
     confirm: function(){ 
      $('<input>').attr('type','hidden').attr('name', 'message_id').attr('value', this.$target.val()).appendTo('form'); 
      $('#messages').submit(); 
     } 
    }); 
1

diesen Ansatz versuchen.

$('button[type=submit]').on('click',function(e){ 
e.preventDefault(); // prevent submit button from firing and submit form 
var $this = $(this); 
$('.confirmation').confirm({ 
     content: 'Delete this message?', 
     title: 'Please confirm', 
     confirm: function(){ 
      $this.parent('form').submit(); // since user has confirmed action now submit form 
     } 
    }); 
}); 

ODER

Erstellen Sie eine kleine delete.php Datei, wo Sie den PHP-Code platzieren können, die das Löschen der Nachricht verarbeitet.

Verwenden Sie jQuery post(), um Ihre Daten nach Bestätigung zu übermitteln.

$('button[type=submit]').on('click',function(e){ 
     e.preventDefault(); // prevent submit button from firing and submit form 
     var $this = $(this); 
     $('.confirmation').confirm({ 
       content: 'Delete this message?', 
       title: 'Please confirm', 
       confirm: function(){ 
         $.post("delete.php", { message_id: $this.val() }) 
         .done(function() { 
          alert("second success"); 
          }) 
          .fail(function() { 
          alert("error"); 
          }); 
       } 
      }); 
     }); 
+0

Hallo Peter, Danke für die hilfreiche Antwort, aber ich möchte dies nicht über $ .post übermäßig kompliziert machen noch $ .ajax, nur eine einfache Bestätigung, wenn der Benutzer auf OK klickt, dann wird das Formular an die PHP-Seite gesendet :) – SonDang

+0

Können Sie bestätigen, was bei der Verwendung von Beispiel A in meiner Antwort gepostet wird? @SonDang, ich meine, kannst du wiederholen, was gepostet wird? –

+0

Ich habe auch Ihr erstes Beispiel versucht, aber es hat auch nicht funktioniert. Aber ich habe eine Workaround gefunden für diese ist versteckte Eingabe mit clicked message_id Wert dann alles funktioniert gut :) hinzufügen :) – SonDang

Verwandte Themen