我想创建一个包含多个提交链接按钮的表单。我知道可以通过使用并指定<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:抱歉英语不好,不是我的母语。
答案 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.
?>