2016-03-02 135 views
1

我想創建一個多個表格提交鏈接按鈕。我知道它可以通過使用與指定的<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"])下的邏輯。

背後的原因:

爲什麼我想有一個提交鏈接按鈕,而不是正常的提交按鈕標記的是,我想用這個引導下拉按鈕樣式改變的用戶狀態(原因S)上表:

,它是基於鏈路,所以這就是爲什麼。

PS:對不好的英語,不是我的母語。

回答

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. 
?> 
+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 
      }); 
+0

我覺得OP想用錨,而不是按鈕/輸入 – stackErr

+0

是,@stackErr是正確的,我想用錨,而不是按鈕/輸入。 –

+0

它的工作原理,但它會提交表單的問題。我想要發生的是當我點擊「激活」鏈接時,例如,我只想處理'isset($ _ GET [「activated」)''下的邏輯。 –

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> 
+0

正如@stackErr指出的那樣,OP想要使用錨點而不是按鈕/輸入 –