2010-04-21 5 views

Antwort

110

mit einem HTML-Formular wie:

<input type="submit" name="btnSubmit" value="Save Changes" /> 
<input type="submit" name="btnDelete" value="Delete" /> 

Der PHP-Code aussehen würde zu verwenden:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    //something posted 

    if (isset($_POST['btnDelete'])) { 
     // btnDelete 
    } else { 
     //assume btnSubmit 
    } 
} 

sollten Sie immer übernehmen oder Standard auf die erste Schaltfläche zum Senden im Formular HTML-Quellcode erscheinen. In der Praxis, wenn die verschiedenen Browsern zuverlässig den Namen/Wert eines Submit-Button mit der Post-Daten senden:

  1. Der Benutzer buchstäblich die Schaltfläche mit der Maus Senden klickt oder Zeigegerät
  2. Oder es liegt der Schwerpunkt auf der Schaltfläche "Senden" (Registerkarten), und dann wird die Eingabetaste gedrückt.

Andere Möglichkeiten, um ein Formular abzusenden existieren, und einige Browser/Versionen entscheiden nicht den Namen/Wert zu senden irgend Tasten einreichen in einigen dieser Situationen. Zum Beispiel senden viele Benutzer Formulare durch Drücken der Eingabetaste, wenn sich der Cursor/Fokus auf einem Textfeld befindet. Formulare können auch über JavaScript sowie einige obskure Methoden eingereicht werden.

Es ist wichtig, auf dieses Detail zu achten, andernfalls können Sie Ihre Benutzer wirklich frustrieren, wenn sie ein Formular absenden, doch "nichts passiert" und ihre Daten gehen verloren, weil Ihr Code eine Formularübermittlung nicht erkannt hat Die Tatsache, dass der Name/Wert eines Absenden-Buttons nicht mit den Post-Daten gesendet werden kann.

Der obige Hinweis sollte auch für Formulare mit einem einzigen Übermittlungsschaltfläche verwendet werden, da Sie immer eine Standardübergabeschaltfläche annehmen sollten.

Ich bin mir bewusst, dass das Internet mit Tonnen von Form-Handler-Tutorials gefüllt ist, und fast von allen tun sie nichts mehr als nach dem Namen und Wert eines Absenden-Schaltfläche zu überprüfen. Aber, sie sind einfach falsch!

+1

Danke für die zusätzlichen Informationen über die Annahme einer Standard-Schaltfläche ... leicht zu übersehen. – kad81

+0

warum benutzt das sonst sonst statt wenn? – Buts

+0

@Gorg sonst wenn was? Was würdest du testen und warum? – goat

8

In HTML:

<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" /> 
<input type="submit" id="btnDelete" name="btnDelete" value="Delete" /> 

In PHP:

if (isset($_POST["btnSubmit"])){ 
    // "Save Changes" clicked 
} else if (isset($_POST["btnDelete"])){ 
    // "Delete" clicked 
} 
+3

Entschuldigung, ich muss nach unten gehen. Forms-Handler, die sich schlecht benehmen, wenn sie die Enter-Taste zum Einreichen benutzen, sind ein Liebling von mir. – goat

+2

@chris - Das ist okay, du machst einen vollkommen gültigen Punkt. Upvoted Ihre Antwort. – MiffTheFox

-2

Sind Sie in PHP oder JavaScript zu fragen.

Wenn es in PHP ist, geben Sie den Namen und verwenden Sie die Post oder Get-Methode, danach können Sie die Option von Isset verwenden oder der bestimmte Button-Name ist auf diesen Wert überprüft.

Wenn es in js ist, verwenden Sie getElementById für das

Verwandte Themen