在Stripe Checkout模式之前验证

时间:2016-05-30 07:27:43

标签: jquery jquery-validate stripe-payments

我有一个简单的表单,其中有一个用于选择产品的选择框,用于选择数量的单选按钮组,然后是一个复选框,如果选中该复选框,则会显示一个选择框和一个输入字段,如果选中复选框,则该字段变为必需。< / 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
  } 
} 

有人可以帮我解决这个问题,还是指出我正确的方向?

谢谢!

1 个答案:

答案 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,因为已经是插件的内置版本在功能上。