一个表单中的多个“链接”提交按钮

时间:2016-03-02 19:42:24

标签: javascript php jquery html twitter-bootstrap

我想创建一个包含多个提交链接按钮的表单。我知道可以通过使用并指定<button><input type="button">这样的名称来完成:

在HTML中:

<form action="" method="get">
  Other form elements here...
  <button type="submit" name="activated">Activated</button>
  <button type="submit" name="pending">Pending</button>
  <button type="submit" name="suspended">Suspended</button>
</form>

在PHP中:

<?php
if(isset($_GET["activated"])) {
  Activated codes here...
}
elseif(isset($_GET["pending"])) {
  Pending codes here...
}
elseif(isset($_GET["suspended"])) {
  Suspended codes here...
}
?>

我希望使用链接完成提交按钮,而不是<button><input type="submit">这样的事情:

<a href="#">Activated</a>
<a href="#">Pending</a>
<a href="#">Suspended</a>

我听说可以通过使用JavaScript或JQuery来完成,但我不知道怎么样,有人都知道吗?

更新:我想要发生的是当我点击“已激活”链接时,我只想处理isset($_GET["activated"])下的逻辑。

背后的原因:

我想要提交链接按钮而不是普通的提交按钮标签的原因是,我想使用此引导下拉按钮样式来更改桌面上用户的状态:

它基于链接,所以这就是原因。

PS:抱歉英语不好,不是我的母语。

3 个答案:

答案 0 :(得分:1)

是的,您可以使用jquery提交表单,只需在按钮中添加一个类并添加一个单击处理程序

$(document).ready(function() {

    $( ".buttons_class" ).click(function() {
      $( "#target_form" ).submit();
    });
});

所以你的按钮看起来像这样

  <button type="button" name="activated" class="buttons_class">Activated</button>
  <button type="button" name="pending" class="buttons_class">Pending</button>
  <button type="button" name="suspended" class="buttons_class">Suspended</button>

如果使用锚点

<a href="#" class="buttons_class">Activated</a>
<a href="#" class="buttons_class">Pending</a>
<a href="#" class="buttons_class">Suspended</a>

并在javascript中

$(document).ready(function() {

        $( ".buttons_class" ).click(function(e) {
             e.preventDefault(); //This will stop the default anchor action
       $("#target_form").attr("action", "yourphpfile.php?"+$(this).text()+"=true"); //This will send the text inside the anchor as a GET param. 
          $( "#target_form" ).submit();
        });
    });

但是,如果我是你,我会考虑使用POST而不是GET。并做这样的事情

  $( ".buttons_class" ).click(function(e) {
                 e.preventDefault(); //This will stop the default anchor action
                var paramName = $(this).text(); //get text inside anchor
                $( "#target_form" ).submit(function(eventObj) {
                   $('<input />').attr('type', 'hidden')
                     .attr('name', paramName);
                     .attr('value', "something")
                    .appendTo('#form');
                   return true;
                 }); //Add hidden field
           });

答案 1 :(得分:0)

将您的isset更改为$ _POST而不是$ _GET,然后它将使用名称属性。

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['test1'])) {
        ###
    } else if ($_POST['test2']) {
        ###
    }
}

<form method="post">
<input name="test1" type="submit" value="TEST 1" />
<input name="test2" type="submit" value="TEST 2" />
</form>

答案 2 :(得分:0)

您可以在锚点上使用数据属性,然后将该属性加载到隐藏字段中以检入PHP代码。

<form action="" method="post">
    <a href="#" class="anchor-btn" data-name="activated">Activated</a>
    <a href="#" class="anchor-btn" data-name="pending">Pending</a>
    <a href="#" class="anchor-btn" data-name="suspended">Suspended</a>
    <input type="hidden" id="actionName" name="actionName" value="" />
</form>

$('.anchor-btn').click(function(e) {
    e.preventDefault();
    $('#actionName').val($(this).data('name'));
    $('form').submit();
});

<?php
    if($_POST['actionName'] == "activated") {
        Activated code goes here
    }
    ...etc.
?>