我没有2个表格。我没有2个提交按钮。我有1个表单和1个提交按钮。我希望在提交表单时能够执行2个不同的操作(或进程)。我真的不想将这两个动作放在同一个php处理器文件中。原因是因为表单中有2个复选框。
如果选中其中一个复选框,我想做1个动作/过程。如果检查了另一个,我想做一个不同的动作/过程。如果两者都被选中,我想做两个动作/过程。我使用它的方式是使用3个PHP处理器文件。一个用于进程A,另一个用于进程B,第三个用于进程A和进程B在同一个文件中,但是这个第三个文件不是很漂亮或干净。
我必须将一堆变量更改为进程B的其他变量,而且每次我必须更新前两个时都需要更新3个文件...或者它很麻烦有麻烦每次我必须更新进程A或进程B时更新2个文件。仅仅维护2个处理器页面就好了。
那么如何使用2个不同的处理器文件一个接一个地运行一个进程,一个表单有一个提交按钮(基于2个复选框)?
实际上让我更深入地解释一下。它实际上是我正在做的3个过程。每次按下提交时发生的默认值。如果检查了2个复选框中的任何一个,则无关紧要。表单的其余部分由默认的php进程处理,该进程与表单位于同一文件中。表格提交给自己。
默认进程运行后,它会检查2个特定复选框的已选中复选框。如果选中一个,它会将标题位置重定向到另一个文件,这是另一个处理器文件。如果选中另一个复选框,它会将标题位置重定向到另一个不同的文件。如果两者都被选中,它会将标题位置重定向到另一个不同的文件,该文件具有其他两个外部处理器文件的重复代码。
以下是我使用的网页数量:
1) form page which also has process 1
2) process 2 page
3) process 3 page
4) process 4 page which is process 2 and 3 together
如果可能,我想摆脱流程4页面,这是我的问题。
该流程在表单页面中的显示方式:
if (isset($_POST['submit'])) {
if (is_numeric($_POST['id'])) {
//bunch of processes
//after all above proccesses done, do redirect to more processes or no more processes
if ($checkboxone !== "" && $checkboxtwo !== "") {
header("Location: externalactionone-and-externalactiontwo.php?id=$id");
}
else if ($checkboxone == "" && $checkboxtwo !== "") {
header("Location: externalactiontwo.php?id=$id");
}
else if ($checkboxone !== "" && $checkboxtwo == "") {
header("Location: externalactionone.php?id=$id");
}
else {
header("Location: gosomewhereelse.php");
}
}
else {
//other process
}
}
else {
//other process
}
修改
基于给出的答案和我对它所做的修改,这就是它的样子,但它仍然不起作用。操作和目标已更改,但不会发生任何提交。我也怀疑它是在做多个动作和目标更改并一个接一个地(连续)提交到多个iframe。
<form id="editform" class="form-style clearfix" action="" target="" method="post">
<!--bunch of other fields-->
<input type='checkbox' id="dothis" name="dothis" value='yes' />
<input type='checkbox' id="dothat" name="dothat" value='yes' />
<input type="button" id="submittheform" class="btn" name="submit" value="Submit" />
</form>
<iframe name="frame_result1" width="0" height="0" frameborder="0"></iframe>
<iframe name="frame_result2" width="0" height="0" frameborder="0"></iframe>
<iframe name="frame_result3" width="0" height="0" frameborder="0"></iframe>
<script type="text/javascript">
$(document).ready(function(){
$("#submittheform").click(function(){
$("form#editform").attr('action', 'submit1.php?id=<?php echo $id; ?>');
$("form#editform").attr('target', 'frame_result1');
$("form#editform").submit();
var chk1="0",chk2="0";
if($("#dothis").prop('checked') == true){
chk1="1";
}
if($("#dothat").prop('checked') == true){
chk2="1";
}
if(chk1==="1"){
$("form#editform").attr('action', 'submit2.php?id=<?php echo $id; ?>');
$("form#editform").attr('target', 'frame_result2');
$("form#editform").submit();
}
if(chk2==="1"){
$("form#editform").attr('action', 'submit3.php?id=<?php echo $id; ?>');
$("form#editform").attr('target', 'frame_result3');
$("form#editform").submit();
}
});
});
</script>
答案 0 :(得分:2)
您可以使用一些jquery代码来实现这一点,假设您的表单如下
<form action="" id="form1">
<input type="checkbox" id="chk1"/>
<input type="checkbox" id="chk2"/>
<input type="button" id="btn1" value="submit">
</form>
<script type="text/javascript">
$(document).ready(function(){
$("#btn1").click(function(){
var chk1="0",chk2="0";
if($("#chk1").prop('checked') == true){
//do something
chk1="1";
}
if($("#chk2").prop('checked') == true){
//do something
chk2="1";
}
if(chk1==="1")
{
$("#form1").attr('action', 'page1.php');
$("#form1").submit();
}
if(chk2==="1")
{
$("#form1").attr('action', 'page2.php');
$("#form1").submit();
}
});
});
</script>