【问题标题】:How can I send two values with one button?如何一键发送两个值?
【发布时间】:2016-09-13 09:10:30
【问题描述】:

是否可以通过一个按钮提交两个值?

$orderby = $_GET['orderby'];

<form action="mypage.php" method="get">
<a><button name ="orderby" value="name" type="submit">&#9660;</button></a>
<a><button name ="orderby" value="age" type="submit">&#9660;</button></a>
</form>

我想像这样:

<a><button name ="orderby" value1="name" value2="ASC" type="submit">&#9660;</button></a>
<a><button name ="orderby" value1="name" value2="DESC" type="submit">&#9660;</button></a>
<a><button name ="orderby" value1="age" value2="ASC" type="submit">&#9660;</button></a>
<a><button name ="orderby" value1="age" value2="DESC" type="submit">&#9660;</button></a>

【问题讨论】:

  • 这样做有什么好处?该按钮只有一个值,以便您可以区分不同的按钮。如果您需要在客户端临时存储值,请考虑在表单中使用隐藏字段。
  • 不行,现在可以,把 value="name1,name2" 这样的值,用 "," 展开,就可以得到
  • 只要使用 value="name ASC" 就可以轻松解决这种情况。可以解决更复杂的情况,如上面@BrijalSavaliya 建议的那样发送分隔符。或者采取原生行动并使用隐藏元素。
  • @Jarla,您可以使用$orderby 本身作为值。并订购包含name_asc
  • @Jarla 为什么要这样做,保留为“smozgur”建议 value="name ASC" , value="name DESC".. 等等 ..

标签: php forms get submit-button


【解决方案1】:

您可以使用 &lt;input type="hidden"/&gt; 的隐藏字段:

<?php
    $orderby = $_GET['orderby'];
?>
<form action="mypage.php" method="get">
    <input type="hidden" name="field" value="fieldname"/>
    <input type="hidden" name="orderby" value="<?= $orderby ?>"/>
    <button name ="submit" value="1" type="submit">&#9660;</button>
</form>

【讨论】:

    【解决方案2】:

    你必须在表单中使用

    <form>
    <input type=hidden name=var1 value="value1">
    <input type=hidden name=var2 value="value2">
    <input type=hidden name=var3 value="value3">
    

    【讨论】:

    • 我在一个表单中有多个提交按钮
    【解决方案3】:

    例如通过 URL 发送。

    <form action="mypage.php?orderby=name&order=ASC" method="get">
    <a><button name ="orderby" value="name" type="submit">&#9660;</button></a>
    </form>
    

    【讨论】:

      【解决方案4】:

      如果要使用按钮获取值,可以使用 jquery 和 ajax。下面给出一个示例代码

      $(form).on('submit', function(e){
          e.preventDefault();
          var value1 = $('button[name=orderby]').attr('value1');
          var value2 = $('button[name=orderby]').attr('value2');
          $.ajax({
              url: 'your/url',
              type: 'POST',
              data: {
                  value1: value1,
                  value2: value2
              },
              success: function(data){
                  //success action
              },
              error: function(){
                  //error action
              }
          });
      });
      

      【讨论】:

        【解决方案5】:

        像“name ASC”或“name{splitter}ASC”这样使用,然后将其分解以在您的代码中使用

        <a><button name ="orderby" value="name ASC" type="submit">&#9660;</button></a>
        <a><button name ="orderby" value="name DESC" type="submit">&#9660;</button></a>
        <a><button name ="orderby" value="age ASC" type="submit">&#9660;</button></a>
        <a><button name ="orderby" value="age DESC" type="submit">&#9660;</button></a>
        

        【讨论】:

        • 如果你有一个 FORM 并且你需要在一个 FORM 中提交另外两个或多个值并且你不能在现有的 FORM 中创建另一个 FORM,这很有用。
        【解决方案6】:

        我认为这是解决您的问题的最佳方法。这对程序员来说是一种更智能、更动态的东西。

        你可以这样做:

        HTML 表单

        <form action="mypage.php" method="get">
            <input type="radio" name="field" checked value="name"> Name
            <input type="radio" name="field" value="age"> Age<br/><br/>
        
            <input type="radio" name="order" checked value="desc"> DESC
            <input type="radio" name="order" value="asc"> ASC<br/><br/>
        
            <a><button name="orderby" value="orderby" type="submit">&#9660;</button></a>
        </form>
        

        mypage.php

        必须使用isset提交等安全性。

        $field = $_GET['field'];
        $order = $_GET['order'];
        

        现在一切就绪,随心所欲。

        【讨论】:

          猜你喜欢
          • 2014-03-07
          • 2020-05-20
          • 1970-01-01
          • 2020-11-18
          • 2017-08-16
          • 1970-01-01
          • 1970-01-01
          • 2019-06-26
          • 2021-07-03
          相关资源
          最近更新 更多