2013-06-12 1 views
10

Есть ли способ вызвать событие при закрытии модального режима проверки полосы?Событие или методы для проверки полос Модальный

Существует около 0,5-1 секундной задержки между временем, в течение которого модальная полоса закрывается, и их ответ доставляется. В это время пользователь может щелкнуть со страницы и т. Д. Чтобы решить эту проблему, мы можем сделать что-то вроде отключения всех ссылок или поместить надпись («обложка») поверх страницы, которая удаляется только тогда, когда Stripe завершена обработка ,

Проблема заключается в том, что невозможно закрыть этот оверлей, если человек решает закрыть модальный режим Stripe (вместо того, чтобы пытаться обработать платеж). Вы не можете настроить таргетинг на модальный (например, $ ('. Stripe-app')) из-за той же политики происхождения.

Любые альтернативные идеи?

Мой код ниже, адаптирован из https://stripe.com/docs/checkout.

// custom Stripe checkout button with custom overlay to avoid UI confusion during payment processing 
$('.btn-stripe').click(function(){ 

    var token = function(res){ 
    var $input = $('<input type=hidden name=stripeToken />').val(res.id); 
    $('.form-stripe').append($input).submit(); 
    }; 

    StripeCheckout.open({ 
    key:   STRIPE_KEY, 
    address:  false, 
    amount:  STRIPE_AMT, 
    currency: 'usd', 
    name:  'Purchase', 
    description: STRIPE_DESC, 
    panelLabel: 'Checkout', 
    token:  token 
    }); 

    $('.cover-all').show(); 

    return false; 
}); 
+0

Там не должно быть задержек. Мы вызываем ваш обратный вызов маркера до того, как модальная функция закрыта. Вы можете отключить кнопку отправки после получения этого обратного вызова. Вы уверены, что задержка не в том, что вы отправляете свою форму? – brian

+0

Мы видим ту же проблему, но не видим поведения, отмеченного Брайаном выше - для нас функция токена вызывается после того, как мода Stripe завершена, что занимает около 1 секунды, поэтому мы застряли без хорошего пути для отключения кнопок. Возможно, у нас что-то не так? – bprotas

ответ

3

Per комментарий от @ Брайан, было подтверждено, что задержка произошла после того, как маркер нашивки возвращается и перед отправкой формы. Чтобы устранить исходную проблему, добавьте оверлей и/или отключите элементы по мере необходимости после возвращения маркера.

// custom Stripe checkout button with disabling of links/buttons until form is submitted 
$('.btn-stripe').click(function(){ 

    var token = function(res){ 
    var $input = $('<input type=hidden name=stripeToken />').val(res.id); 

    // show processing message, disable links and buttons until form is submitted and reloads 
    $('a').bind("click", function() { return false; }); 
    $('button').addClass('disabled'); 
    $('.overlay-container').show(); 

    // submit form 
    $('.form-stripe').append($input).submit(); 
    }; 

    StripeCheckout.open({ 
    key:   'key', 
    address:  false, 
    amount:  1000, 
    currency: 'usd', 
    name:  'Purchase', 
    description: 'Description', 
    panelLabel: 'Checkout', 
    token:  token 
    }); 

    return false; 
}); 
8

Лучший способ справиться с этим может состоять в том, чтобы показать прядильщик или что-то в процессе его обработки.

Закрыт - это опция, предоставляемая Stripe для пользовательской интеграции. Он вызывается всякий раз, когда форма отправляется или закрывается нажатием кнопки X. Надеюсь, это может быть полезно.
eg: handler.open({closed : function(){/* some function here*/}})

 Смежные вопросы

  • Нет связанных вопросов^_^