Javascript 在Safari上未调用beforeSubmit上的jquery
我已经创建了一个带条带的支付表单,它需要与它们的API交互,以便在提交表单之前获得令牌。所有的东西都在Chrome中进行了测试,但昨天一位用户说它在Safari中不起作用 我已经能够缩小Safari在执行以下代码之前提交表单的原因:Javascript 在Safari上未调用beforeSubmit上的jquery,javascript,jquery,safari,stripe-payments,Javascript,Jquery,Safari,Stripe Payments,我已经创建了一个带条带的支付表单,它需要与它们的API交互,以便在提交表单之前获得令牌。所有的东西都在Chrome中进行了测试,但昨天一位用户说它在Safari中不起作用 我已经能够缩小Safari在执行以下代码之前提交表单的原因: $('#payment-form').on('beforeSubmit', function(event) { if (isCcNeeded()) { // Disable t
$('#payment-form').on('beforeSubmit', function(event) {
if (isCcNeeded()) {
// Disable the submit button to prevent repeated clicks:
$('#payment-form').find('.submit').prop('disabled', true);
// Request a token from Stripe:
Stripe.card.createToken({
number: $('input#stripe-card-number').val(),
cvc: $('input#stripe-cvc').val(),
exp_month: getExpMonth(),
exp_year: getExpYear(),
address_zip: $('input#stripe-address-zip').val()
}, stripeResponseHandler);
// Prevent the form from being submitted:
return false;
}
});
有人知道为什么跳过这个吗?好的!因此,解决方案实际上是我正在尝试的一些事情的组合。正如我在原始帖子中的评论所述,我首先需要改为使用“提交”,而不是“提交前”(我认为这是一个Yii2特有的东西) 然而,我不得不更进一步。为了让它真正工作,我还必须对事件调用preventDefault() 在我处理这些代码时,我也从stripe.jsv2迁移到了v3,所以我不确定这是否有帮助 最后的解决办法是
var form = document.getElementById('payment-form');
$('#payment-form').on('submit', function(e) {
e.preventDefault();
createToken();
});
谢谢大家的帮助 你能用submit和test更改beforeSubmit吗?为什么要在beforeSubmit之前打电话?如果createToken调用为successfull@gaetanoM,我也尝试过将('beforesmit',函数(event)替换为$('beforesmit')。submit(函数(event)和('submit',函数(event')。on('submit',函数(event)两者都有相同的结果。我想第二次尝试在“提交”上使用——如果你尝试这样的东西,它对你有用吗?