条纹信用卡处理错误突然发生

时间:2014-12-03 16:33:02

标签: backbone.js coffeescript stripe-payments

使用条带处理信用卡时,我在浏览器上收到此错误。

Uncaught InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('hidden') does not support selection.
 Stripe.utils.r.serialize
 Stripe.utils.r.serialize
 Stripe.utils.r.serialize
 Stripe.utils.r.serialize
 Stripe.ajaxJSONP
 e.request
 t.create
 n.createToken
Acpremium.Views.FyUpgradeCCCaptureView.FyUpgradeCCCaptureView.onPaymentSubmit
p.event.dispatch
g.handle.h

我的代码使用Backbone& CoffeeScript调用Stripe。我的代码(如下所示)正在运行&处理付款至2014年11月6日。从那时起,上述错误已经开始发生。

我的代码中的条带调用:

   onPaymentSubmit: (event) =>
    event.preventDefault()
    $("*").addClass("busy")

    paymentForm = @$('#payment-form')
    paymentForm.find('button').prop('disabled', true)
    Stripe.card.createToken paymentForm, @stripeResponseHandler
    false

如果我更改了代码

paymentForm = @$('#payment-form')

   paymentForm = $('#payment-form')

处理过程。这有什么解释吗?

早期的stackoverflow问题How to fit Stripe into Backbone View? 表示@ $是正确的方式,@ $直到最近才为我工作。

还有其他人在Stripe上遇到过这个问题吗?

1 个答案:

答案 0 :(得分:1)

如果onPaymentSubmit是您班级中的一种方法,请确保您的班级有适当的el元素包裹您的#payment-form元素。

您的HTML,CoffeeScript结构应如下所示:

<div class='payment'>
    <form id='payment-form'>...</form>
</div>

和CS:

class Payment extend Backbone.View

   el: ".payment"  // Here .payment is parent element to #payment-form

   ...

   onPaymentSubmit: => ...

当您使用@$查找元素时,它会开始查看View的el属性。所以基本上在这种情况下它看起来像:

   @$("#payment-form") === $(".payment #payment-form")

我的猜测是你的#payment-form超出了Backbone View的范围