如何仅在使用1个提交按钮成功发布另一个表单后,如何才能提交表单?

时间:2015-10-18 02:53:45

标签: php forms

我的网页上有2个表单。我想给出他们同时提交的错觉。我需要一个表单来处理,如果它失败了,不要处理第二个表单。第一种形式是付款信息。第二种形式是“提问”形式。我该怎么做呢?我使用PHP作为服务器端代码。 Her is a screenshot of my 2 forms对于任何想知道的人。注意:我删除了用于提交Braintree表单的“付费”按钮,因为我希望只有一个提交按钮 - 插件的“发布问题”按钮。

  1. 如何仅使用1个按钮开始两个表单的整体提交过程?
  2. 如何限制第二张表格仅在首次成功完成后才发布?

1 个答案:

答案 0 :(得分:0)

This JSFiddle应该可以工作。

它只是在第一种形式中有一个简单的条件因素(你可以修改它以检查正确的支付信息),第二种形式有提交按钮。如果第一个表单的信息不正确,则不会使用return false;发送。如果它确实通过,那么它首先发送带有form.submit();的第一个表单,然后使用第二个表单。

编辑:上面的答案只发送两个表单 - 它不会检查第一个是否通过,但它会进行一些基本的JS验证。

假设您有两种形式(因为您的imgur链接被破坏了,我无法说出它们的真实外观):

<form action="braintree.php">
    <!-- Payment options -->
</form>
<form action="questions.php">
    <!-- The questions you want -->
    <button>Submit</button>
</form>

假设您有braintree.php文件:(您正在使用PHP,对吗?)

<?php
     // send data to braintree
     if(/* payment goes through */) {
         echo "0";    // echo error code 0 (no error) for JS
     } else {
         echo "1";    // echo error code 1 (error) for JS
                      // if you can get an error back from braintree, 
                      // then you can add it here -- it will be sent 
                      // back to JS and you can show it to the user
     }
?>

假设你有这样的JQuery(JS):

$("button").click(function() {
    // manually send first form with AJAX
    $.ajax({
        url: "braintree.php",
        method: "post",
        asynch: false,    // so that the second form waits for this request to finish
        data: {
            // put in all the data to send in the braintree file here
            fname: $("#fname").val();
            lname: $("#lname").val();
        }
    }).done(function(data) {
        // data will be the response from "braintree.php"
        if(data == "0") {
            return true;
        } else {
            // if you have a more specific error, you can alert() it here
            return false;
        }
    });
});

此代码未经测试,请告诉我它是否无效。