Ich benutze Stripe.js zu versuchen und ein Token für eine Zahlungsquelle abrufen, bevor das ItemEdit-Formular gesendet wird. Ich bin in der Lage, die Formularübermittlung zu stoppen und das Token abzurufen, aber ich versuche herauszufinden, wie die Übermittlungsaktion erneut aufgerufen wird, nachdem die AJAX-Anforderung (erfolgreich) abgeschlossen wurde. Im Moment verwende ich form.submit()
, aber das will die gesamte Seite aktualisieren und gibt mir eine hässliche Warnung (Verlassen/Bleiben). Kennt jemand einen reibungsloseren Weg dies zu tun?Call save Aktion auf ItemEditForm von Javascript
(function($) {
$.entwine('ss', function($) {
var form = $('#Form_ItemEditForm');
var field = $('input.stripetokenfield');
$(form).entwine({
onsubmit: function(e) {
var key = getStripeFieldByData(form, 'key');
var token_field = getStripeFieldByData(form, 'token');
Stripe.setPublishableKey(key.val());
Stripe.card.createToken(form, stripeResponseHandler);
e.preventDefault();
return false;
}
});
});
function getStripeFieldByData(form, string) {
var field = $(form).find('[data-stripe="' + string + '"]');
return field;
}
function stripeResponseHandler(status, response) {
var form = $('#Form_ItemEditForm');
if(response.error) {
form.find('.payment-errors').text(response.error.message);
}else {
var token_field = getStripeFieldByData(form, 'token');
token_field.val(response.id);
if(token_field.val()) {
form.get(0).submit();
}
}
}
})(jQuery);