Two submit buttons in one form

前端 未结 19 2046
不思量自难忘°
不思量自难忘° 2020-11-21 23:23

I have two submit buttons in a form. How do I determine which one was hit serverside?

相关标签:
19条回答
  • 2020-11-21 23:51
    <form method="post">
    <input type="hidden" name="id" value="'.$id.'" readonly="readonly"/>'; //any value to post PHP
    <input type='submit' name='update' value='update' formAction='updateCars.php'/>
    <input type='submit' name='delete' value='delete' formAction='sqlDelete.php'/>
    </form>
    
    0 讨论(0)
  • 2020-11-21 23:53

    This is extremely easy to test

    <form action="" method="get">
    
    <input type="submit" name="sb" value="One">
    <input type="submit" name="sb" value="Two">
    <input type="submit" name="sb" value="Three">
    
    </form>
    

    Just put that in an HTML page, click the buttons, and look at the URL

    0 讨论(0)
  • 2020-11-21 23:58

    Maybe the suggested solutions here worked in 2009, but ive tested all of this upvoted answers and nobody is working in any browsers.

    only solution i found working is this: (but its a bit ugly to use i think)

    <form method="post" name="form">
    <input type="submit" value="dosomething" onclick="javascript: form.action='actionurl1';"/>
    <input type="submit" value="dosomethingelse" onclick="javascript: form.action='actionurl2';"/>
    

    0 讨论(0)
  • 2020-11-22 00:00

    You can present the buttons like this:

    <input type="submit" name="typeBtn" value="BUY">
    <input type="submit" name="typeBtn" value="SELL">
    

    And then in the code you can get the value using:

    if request.method == 'POST':
        #valUnits = request.POST.get('unitsInput','')
        #valPrice = request.POST.get('priceInput','')
        valType = request.POST.get('typeBtn','')
    

    (valUnits and valPrice are some other values I extract from the form that I left in for illustration)

    0 讨论(0)
  • 2020-11-22 00:01

    Since you didn't specify what server-side scripting method you're using, I'll give you an example that works for PHP

    <?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>

    Forms

    When click on Login -> loginForm

    When click on Save -> saveForm

    When click on Register -> registrationForm

    0 讨论(0)
  • 2020-11-22 00:02

    An even better solution consists of using button tags to submit the form:

    <form>
        ...
        <button type="submit" name="action" value="update">Update</button>
        <button type="submit" name="action" value="delete">Delete</button>
    </form>
    

    The HTML inside the button (e.g. ..>Update<.. is what is seen by the user; because there is HTML provided, the value is not user-visible; it is only sent to server. This way there is no inconvenience with internationalization and multiple display languages (in the former solution, the label of the button is also the value sent to the server).

    0 讨论(0)
提交回复
热议问题