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