Forms 表单嵌套,表单中有更多提交按钮
我知道不能在html中嵌套表单。因此,我需要帮助来实现以下功能 我有一个复选框列表:Forms 表单嵌套,表单中有更多提交按钮,forms,checkbox,submit,Forms,Checkbox,Submit,我知道不能在html中嵌套表单。因此,我需要帮助来实现以下功能 我有一个复选框列表: <form action="addAll.php" method="post"> <ul> <li><input type="checkbox" name="boxes[]" value="1"> <a href="#">No. 1</a></li> <li><input type="che
<form action="addAll.php" method="post">
<ul>
<li><input type="checkbox" name="boxes[]" value="1"> <a href="#">No. 1</a></li>
<li><input type="checkbox" name="boxes[]" value="2"> <a href="#">No. 2</a></li>
<li><input type="checkbox" name="boxes[]" value="3"> <a href="#">No. 3</a></li>
<li><input type="checkbox" name="boxes[]" value="4"> <a href="#">No. 4</a></li>
</ul>
<input type="submit" value="Add all">
</form>
单击“提交”按钮“添加全部”时,将收集值并发送到addAll.php文件。到目前为止,一切顺利
列表中有链接,如图所示。现在需要的功能是,当我单击一个链接时,表单将提交到addAll.php以外的另一个页面。因此,实际上,我需要四个提交按钮来代替每个链接,每个按钮将表单提交到自己的文件中,而不是addAll.php 我只需要能够保存这些复选框,当用户在链接之间来回导航时,会选中这些复选框,直到他最终在某个点上单击“添加所有”提交按钮。因此,我希望在单击链接后,将用户的复选框带到新页面,这样就可以保存该链接,并且如果用户稍后返回单击“全部添加”,我可以通过查看帖子数据来重新选中复选框
有解决方案吗?我不建议这样做,但对我来说,这似乎是我能想到的最接近于不使用javascript的解决方案 addAll.php
...
function redirect($url) {
$query_string = urlencode('?boxes=['.implode(',', $_POST['boxes']).']');
$base_url = some_awkward_way_of_getting_the_base_url();
$url_full = $url_base.$url;
header('Location: '.$url_full.$query_string);
}
function alternative($url) {
$_SESSION['boxes'] = $_POST['boxes'];
$base_url = some_awkward_way_of_getting_the_base_url();
$url_full = $url_base.$url;
header('Location: '.$url_full);
}
if (isset($_POST['submit_nr1']))
redirect('nr1.php');
else if (isset($_POST['submit_nr2']))
redirect('nr2.php');
else if (isset($_POST['submit_nr3']))
redirect('nr3.php');
else if (isset($_POST['submit_nr4']))
redirect('nr4.php');
else if (isset($_POST['submit_all']))
handle_accordingly();
...
或者,您可以让addAll.php根据不同的情况包含/需要不同的文件,而不是执行头重定向
checkbox.php
...
<form action="addAll.php" method="post">
<ul>
<li>
<input type="checkbox" name="boxes[]" value="1">
<input type="submit" name="submit_nr1" value="No. 1"/>
</li>
<li>
<input type="checkbox" name="boxes[]" value="2">
<input type="submit" name="submit_nr2" value="No. 2"/>
</li>
<li>
<input type="checkbox" name="boxes[]" value="3">
<input type="submit" name="submit_nr3" value="No. 3"/>
</li>
<li>
<input type="checkbox" name="boxes[]" value="4">
<input type="submit" name="submit_nr4" value="No. 4"/>
</li>
</ul>
<input type="submit" name="submit_all" value="Add all">
</form>
...
。。。
-
-
-
-
...
免责声明:我已经很久没有编写PHP了,这还没有经过测试,但至少应该说明一个可能的解决方案。您可以使用javascript将复选框的状态存储在cookie或查询字符串中,甚至覆盖forms action属性和submit()。是的。如果可以用html/css解决这个问题,我更愿意这样做。但是JS当然可以解决这个问题。你可以有多个提交按钮,但是它们会提交到addAll.php,所以你必须在服务器端处理事情。处理多个提交按钮的方法是对它们进行不同的命名
..
addAll.php可以有如下功能:if(isset($\u POST['submit\u nr1']))…
重定向到不同的文件,通过查询字符串或会话传递相关的POST数据。