2015-10-18 82 views
0

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

  1. 我如何开始使用只有1个按键两种形式整体提交过程?
  2. 如何限制第二张表格只有在第一次成功后才会发布?
+0

你可以简单地使用JS来做到这一点。 –

+0

@ jlam55555可以理解,但我是web dev的新手,我不确定如何开始为此编写JS代码。我试图从教程中学习它,但是这个旅程是艰巨的。所以我想我会在这里问。你能否提供一个可以像使用“处理程序”的一般示例? – DarthVoid

+0

你是否只用一次就可以获得所有的信息? –

回答

0

This JSFiddle应该工作。

它只是在第一个表单中有一个简单的条件因素(您可以修改它来检查正确的付款信息),第二个表单具有提交按钮。如果第一个表单的信息不正确,它将不会通过使用 return false;发送。如果确实通过了,那么它会首先发送第一个表单,并使用 form.submit();,然后用第二个表单进行处理。

编辑:以上答案只是将两种形式 - 它不检查的第一个经过,但它确实insteads一些基本的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; 
     } 
    }); 
}); 

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

+0

在JSFiddle示例中,复选框示例基于正在标记的字段。所以你希望我通过检查字段是否填充(类似于复选框)将它与我的第一个表单联系起来。但我不认为这正是我正在寻找的东西(尽管它非常接近!)。我希望第一张表格在提交第二张表格之前完全提交。这是因为我想确保整个付款提交过程顺利完成。假设这是大多数支付+网络服务的工作原理,我是否正确? – DarthVoid

+0

例如,如果我想在亚马逊购买东西,那么在亚马逊开始将订单详细信息写入其订单历史记录表之前,我们必须先付款。此外,付款必须经过通知卖方,他们必须运送给我。 – DarthVoid

+0

@DarthVoid当您使用AJAX并等待响应时。我想我也可以帮忙解释一下。 –