我有一个简单的表单,其中有一个用于选择产品的选择框,用于选择数量的单选按钮组,然后是一个复选框,如果选中该复选框,则会显示一个选择框和一个输入字段,如果选中复选框,则该字段变为必需。< / p>
<form action="stripeprocess.php">
<!-- fields and structure here, product, quantity, join mailing list checkbox and other mailing list questions that appear when checkbox is ticked -->
<script src="https://checkout.stripe.com/checkout.js"></script>
<button id="stripe-button" class="bin">Enter Pay Details with Stripe</button>
<script>
$('#stripe-button').click(function(){
var token = function(res){
var $id = $('<input type=hidden name=stripeToken />').val(res.id);
var $email = $('<input type=hidden name=stripeEmail />').val(res.email);
$('#order-form').append($id).append($email).submit();
};
StripeCheckout.open({
key: 'hidden',
name: 'hidden',
image: 'logo.png',
description: 'Complete your Order',
panelLabel: 'Complete Order',
billingAddress: true,
zipCode: true,
token: token
});
return false;
});
</script>
</form>
一切正常,订单正在处理,我只需要添加验证。我知道如何在jQuery validate中编写规则,但我不知道如何做到这一点并实现它来运行验证,然后在成功验证后进行条带检查。
所以用最简单的代码方式,我想完成这个:
if(submit button is pressed) {
run jQuery validate on forms
if(jQuery validate successful) {
run stripe and launch modal
}
}
有人可以帮我解决这个问题,还是指出我正确的方向?
谢谢!
答案 0 :(得分:0)
我想做到这一点:
if (submit button is pressed) {
// run jQuery validate on forms // part 1
if(jQuery validate successful) {
// run stripe and launch modal // part 2
}
}
对于&#34;第1部分&#34;,您不应该担心捕获提交或点击事件。该插件将在正确初始化后自动捕获。
所以&#34;第1部分&#34;通过将.validate()
方法附加到form
元素,简单地初始化DOM Ready事件处理程序中的jQuery Validate插件。
$(document).ready(function() {
// initialize plugin
$('form[action="stripeprocess.php"]').validate({
rules: { ....
对于&#34;第2部分&#34;,您可以&#34;在成功验证后执行某些事情&#34; 将其置于submitHandler
函数中...... < / p>
$(document).ready(function() {
// initialize plugin
$('form[action="stripeprocess.php"]').validate({
rules: {
....
},
submitHandler: function (form) {
// fires on valid form
// run stripe and launch modal
// form.submit(); // regular submit
}
....
虽然如果action="stripeprocess.php"
表示启动Stripe,那么您根本不需要submitHandler
,因为已经是插件的内置版本在功能上。