2016-05-30 45 views
-1

我有一个简单的表单,有一个选择框来选择产品,电台组来选择数量,然后复选框,如果选中,显示一个选择框和一个输入字段,如果检查框被选中。验证之前条纹结帐模式

<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验证中编写规则,但我不确定如何执行该操作并实现它以运行验证,然后在验证成功后运行分条签出。

所以在代码最简单的方法,我想做到这一点:

if(submit button is pressed) { 
    run jQuery validate on forms 

    if(jQuery validate successful) { 
    run stripe and launch modal 
    } 
} 

有人可以帮助我这个或点我在正确的方向?

谢谢!

+0

你使用什么插件进行表单验证? – makshh

+0

我没有偏好,如果你有一个可以为此工作,我曾在https://jqueryvalidation.org过去。 – Jack

+0

所以如果你可以使用这个插件,你只需要写下:'$('#your-form')。validate(//你的规则)' – makshh

回答

0

我想做到这一点:

if (submit button is pressed) { 
    // run jQuery validate on forms // part 1 

    if(jQuery validate successful) { 
     // run stripe and launch modal // part 2 
    } 
} 

对于“第1部分”,你不应该担心捕捉提交或点击事件。在正确初始化之后,插件会自动捕获这些数据

因此,对于“第1部分”,只需将.validate()方法附加到form元素,即可初始化DOM Ready事件处理程序中的jQuery Validate插件。

$(document).ready(function() { 

    // initialize plugin 
    $('form[action="stripeprocess.php"]').validate({ 
     rules: { .... 

对于 “第2部分”,你可以通过把它的submitHandler函数中成功验证 “有所作为” ...

$(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"代表发起条纹,那么根本就不需要submitHandler,因为这已经是插件的内置功能。