693 Stimmen

Zwei Übermittlungsschaltflächen in einem Formular

Ich habe zwei einreichen Schaltflächen in einem Formular. Wie kann ich feststellen, welche Schaltfläche serverseitig angeklickt wurde?

2voto

Rohit Gupta Punkte 2547

Die aktualisierte Antwort ist die Verwendung der Schaltfläche mit formaktion y formtarget

In diesem Beispiel ruft die erste Schaltfläche eine andere URL auf /preview in einer neuen Registerkarte. Die anderen drei verwenden die Aktion angegeben in der Formular Tag.

<button type='submit' class='large' id='btnpreview' name='btnsubmit' value='Preview' formaction='/preview' formtarget='blank' >Preview</button>
<button type='submit' class='large' id='btnsave' name='btnsubmit' value='Save' >Save</button>
<button type='submit' class='large' id='btnreset' name='btnsubmit' value='Reset' >Reset</button>
<button type='submit' class='large' id='btncancel' name='btnsubmit' value='Cancel' >Cancel</button>

Vollständig Dokumentation ist hier

2voto

Pato Punkte 662

Sie können es auch so machen (ich denke, es ist sehr praktisch, wenn Sie N Eingänge haben).

<input type="submit" name="row[456]" value="something">
<input type="submit" name="row[123]" value="something">
<input type="submit" name="row[789]" value="something">

Ein üblicher Anwendungsfall wäre die Verwendung verschiedener IDs aus einer Datenbank für jede Schaltfläche, so dass Sie später im Server wissen können, welche Zeile angeklickt wurde.

Auf der Serverseite (in diesem Beispiel PHP) können Sie "row" als Array lesen, um die ID zu erhalten.

$_POST['row'] ist ein Array mit nur einem Element, in der Form [ id => value ] (zum Beispiel: [ '123' => 'something' ] ).

Um also die angeklickte ID zu erhalten, müssen Sie dies tun:

$index = key($_POST['row']);

Schlüssel

2voto

John B Punkte 19411

Ich denke, Sie sollten in der Lage sein, den Namen/Wert in Ihrem GET-Array zu lesen. Ich denke, dass die Schaltfläche, die nicht angeklickt wurde, nicht in dieser Liste erscheint.

0voto

Jonathan Laliberte Punkte 2524

Sie können auch ein href-Attribut verwenden und ein get mit dem angehängten Wert für jede Schaltfläche senden. Aber das Formular würde dann nicht benötigt werden

href="http://stackoverflow.com/SubmitForm?action=delete"
href="http://stackoverflow.com/SubmitForm?action=save"

-1voto

Da Sie nicht angegeben haben, welche serverseitige Scripting-Methode Sie verwenden, gebe ich Ihnen ein Beispiel, das für PHP funktioniert

<?php
   if(isset($_POST["loginForm"]))
   {
    print_r ($_POST); // FOR Showing POST DATA
   }
   elseif(isset($_POST["registrationForm"]))
   {
    print_r ($_POST);
   }
   elseif(isset($_POST["saveForm"]))
   {
    print_r ($_POST);
   }
   else{

   }
?>
<html>
<head>
</head>
<body>

  <fieldset>
    <legend>FORM-1 with 2 buttons</legend>
      <form method="post" >
      <input type="text" name="loginname" value ="ABC" >

     <!--Always use type="password" for password --> 
     <input type="text" name="loginpassword" value ="abc123" >

     <input type="submit" name="loginForm" value="Login"><!--SUBMIT Button 1 -->
     <input type="submit" name="saveForm" value="Save">  <!--SUBMIT Button 2 -->
   </form>
  </fieldset>

  <fieldset>
    <legend>FORM-2 with 1 button</legend>
     <form method="post" >
      <input type="text" name="registrationname" value ="XYZ" >

     <!--Always use type="password" for password -->
     <input type="text" name="registrationpassword" value ="xyz123" >

     <input type="submit" name="registrationForm" value="Register"> <!--SUBMIT Button 3 -->
   </form>
  </fieldset>

</body>
</html>

Formulare

Wenn Sie auf Login -> loginForm klicken

Wenn Sie auf Speichern -> saveForm klicken

Wenn Sie auf Registrieren -> registrationForm klicken

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X