2016-11-10 3 views
0

Im Moment habe ich eine Seite, die ein form wie diese hat:zu identifizieren, die Taste hat Formularübermittlung ausgelöst

<form method="post"> 
    <input name="data1" type="hidden" value="x"> 
    <input name="data2" type="hidden" value="y"> 

    <button name="button1" formaction="page1.php">Do something</button> 
    <button name="button2" formaction="page2.php">Do something else</button> 

</form> 

diese aufzuräumen Ich möchte Seite1 und Seite2 in eine konsolidieren, aber ich würde sein müssen in der Lage zu identifizieren, welcher Knopf es ausgelöst hat. So würde ich so etwas wie dieses:

<form method="post"> 
    <input name="data1" type="hidden" value="x"> 
    <input name="data2" type="hidden" value="y"> 

    <button name="button1" formaction="page.php">Do something</button> 
    <button name="button2" formaction="page.php">Do something else</button> 
</form> 

Ist es möglich, für page.php zu wissen, welche Taste sie gefeuert?

+0

möglich Duplikat http://stackoverflow.com/questions/2680160/how-can-i-tell-which-button-was-clicked-in-a-php-form-submit – ADyson

+0

ändern die Schaltflächen für Eingaben mit type = "submit", wenn das Formular gesendet wird, überprüfen Sie das post-Array für den Namen der Schaltfläche. – Blinkydamo

Antwort

2

Es gibt nichts in Ihrem <form /> zu ändern ist hier, wird thour PHP-Skript wissen, welche button hat dank der name Attribut geklickt wurde:

<?php 
if (isset($_POST['button1'])) { 
    echo 'button1 has been clicked!'; 
} else if (isset($_POST['button2'])) { 
    echo 'button2 has been clicked!'; 
} 
+0

Beifall. Offensichtlich wirklich - vielen Dank. – RGriffiths

0

Ändern Sie die zu übergebenden Schaltflächen und suchen Sie im post-Array in der PHP-Datei nach dem eingegebenen Namen.

<form method="post"> 
    <input name="data1" type="hidden" value="x"> 
    <input name="data2" type="hidden" value="y"> 

    <input type="submit" value="Do Something" name="button1" formaction="page.php" /> 
    <input type="submit" value="Do Something Else" name="button2" formaction="page.php" > 
</form> 

PHP Script

if(isset($_POST[ 'button1' ])) 
{ 
    // Do something 
} 
elseif(isset($_POST[ 'button2' ])) 
{ 
    // Do something else 
} 
+0

keine Notwendigkeit Eigentlich zu verwandeln 'button' in' input type = "submit" '. Außerdem haben Sie einen Syntaxfehler (kein Schließen '„'' nach type =“submit') – roberto06

0

Pass the ID in der Schaltfläche. Ja, es ist möglich. wenn der Wert das Sammeln tun verwenden :: $value = $_POST ; print_r($value) ;

und überprüfen Whcih Taste

1

ausgelöst hat Sie können es durch Javascript tun.

Geben Sie beiden Schaltflächen dieselbe Klasse und geben Sie eindeutige IDs.

Rufen Sie jQuery auf, wenn Sie auf Schaltflächen klicken.

Holen Sie sich die Formularaktion von der jeweiligen Schaltfläche.

Setzen Sie es auf <form>action.

Senden Sie das Formular.

Hinweis: Zum Verständnis wird die Warnung hinzugefügt.

<script> 
$(function(){ 
    $(".sub").on("click", function(){ 
     var id = $(this).attr("id"); 
     var formAction = $(this).attr("formaction"); 
     $("#msg").html(id + " button clicked and form will be submitted to: " + formAction); 
     alert(id + " button clicked and form will be submitted to: " + formAction); 
     $("#frm").attr("action", formAction); 
     $("#frm").submit(); 
     //return false; 
    }); 
}); 
</script> 
<form method="post"> 
    <input name="data1" type="hidden" value="x"> 
    <input name="data2" type="hidden" value="y"> 

    <button name="button1" formaction="page1.php" class="sub" id="one">Do something</button> 
    <button name="button2" formaction="page2.php" class="sub" id="two">Do something else</button> 
    <div id="msg"></div> 
</form> 
Verwandte Themen