使用一个按钮提交多个表单

Jos*_*eta 5 php session jquery shopping-cart paypal

$_SESSION用来为我的网上商店动态创建表单.这些表单包含客户想要的产品的自定义信息.这是布局:

第1页

客户填写看起来像这样的表单:

<form action="page2" method="post">
<input type="text" name="size">
<input type="text" name="color">
<input type="submit" name="submit" value="Review Order">
</form>
Run Code Online (Sandbox Code Playgroud)

第2页

客户查看订单详情,并可选择添加更多产品.客户返回第1页订购另一个.所有客户的订单将以第2页的形式显示.

看起来像这样:

Size: 1
Color: blue
Click Here To Checkout

Size: 2
Color:green
Click Here To Checkout

Size:3
color:red
Click Here To Checkout
Run Code Online (Sandbox Code Playgroud)

我想要的是一个将所有订单添加到PayPal购物车的按钮.当然,他们可以通过点击单独添加每个订单Click Here To Checkout,但是他们将不得不经历一个大循环来添加多个产品.

我希望客户能够添加尽可能多的产品,然后单击一个按钮将所有订单添加到购物车.

这是我尝试的但显然不起作用:

<script>
$(document).ready(function(){
$('#clickAll').on('click', function() {
    $('input[type="submit"]').trigger('click');
    });
    });
    </script>

    <form action="" method="post">
    <input type="text" name="name">
    <input type="submit" name="submit" value="submit">
    </form>

    <form action="" method="post">
    <input type="text" name="name">
    <input type="submit" name="submit" value="submit">
    </form>

    <form action="" method="post">
    <input type="text" name="name">
    <input type="submit" name="submit" value="submit">
    </form>

    <button id="clickAll">Submit All</button>
Run Code Online (Sandbox Code Playgroud)

这是使用$_SESSION以下命令生成动态表单的php脚本:

<?php

if(isset($_POST['submit'])) :

$test = array(
    'size' => $_POST['size'],
    'color' => $_POST['color'],
    'submit' => $_POST['submit']
);

$_SESSION['testing'][] = $test;

endif;


if(isset($_SESSION['testing'])) : 

foreach($_SESSION['testing'] as $sav) {

?>

<form action="paypal.com/..." method="post">
<input type="text" name="size" value="<?php echo $sav['size']; ?>">
<input type="text" name="color" value="<?php echo $sav['color']; ?>">
<input type="submit" name="submit" value="Click Here to Checkout">
</form>

<?php } endif; ?>
Run Code Online (Sandbox Code Playgroud)

所以问题是,如何使用ONE按钮提交所有表单?

sag*_*its 5

您是否尝试过使用 $.ajax 来做到这一点?您可以添加 foreach,或在 Onsucces 函数上调用另一个表单。另一种方法是将所有内容更改为一种形式,并使用指向正确“抽象”形式的数组:

<form action="" method="post">
    <input type="text" name="name[]">
    <input type="text" name="example[]">

    <input type="text" name="name[]">
    <input type="text" name="example[]">

    <input type="text" name="name[]">
    <input type="text" name="example[]">

    <button id="clickAll">Submit All</button>
</form>
Run Code Online (Sandbox Code Playgroud)

在 PHP 中:

foreach ($_POST['name'] as $key => $value) {
    $_POST['name'][$key]; // make something with it
    $_POST['example'][$key];  // it will get the same index $key
}
Run Code Online (Sandbox Code Playgroud)


Fas*_*ack 0

这是一个工作的 jsFiddle:http://jsfiddle.net/SqF6Z/3/

基本上,class为每个添加一个formtrigger()在该上提交class。就像这样:

HTML(仅示例):

<form action="http://www.google.com" method="get" class="myForms" id="1stform">
    <input type="text" value="1st Form" name="q1" />
</form>
<form action="http://www.google.com" method="get" class="myForms" id="2ndform">
    <input type="text" value="2nd Form" name="q2" />
</form>
<form action="http://www.google.com" method="get" class="myForms" id="3rdform">
    <input type="text" value="3rd Form" name="q3" />
</form>
<input type="button" id="clickMe" value="Submit ALL" />
Run Code Online (Sandbox Code Playgroud)

jQuery:

$('.myForms').submit(function () {
    console.log("");
    return true;
})

$("#clickMe").click(function () {
    $(".myForms").trigger('submit'); // should show 3 alerts (one for each form submission)
});
Run Code Online (Sandbox Code Playgroud)