2016-03-02 2 views
1

Я хотел бы создать форму с несколькими отправить ссылку кнопки. Я знаю, что это может быть сделано с помощью и указав имя <button> или <input type="button"> что-то вроде этого:Несколько кнопок «link» submit в одной форме

В 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... 
} 
?> 

Я хочу представить кнопки сделайте с помощью link, а не <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

Я думаю, что ОП хотел использовать анкеры вместо кнопок/входов – 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 хотел использовать якоря вместо кнопок/входов –

Смежные вопросы