Backbone.js 条纹信用卡处理错误突然发生
在使用stripe处理信用卡时,我在浏览器上遇到此错误Backbone.js 条纹信用卡处理错误突然发生,backbone.js,coffeescript,stripe-payments,Backbone.js,Coffeescript,Stripe Payments,在使用stripe处理信用卡时,我在浏览器上遇到此错误 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 Str
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
我的代码使用主干和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')
到
整个过程都是这样的。有什么解释吗
前面的一个问题
表明@$是正确的选择,@$直到最近还为我工作
还有其他人在Stripe上遇到过这个问题吗?如果类中的方法是
onPaymentSubmit
,请确保类中有一个适当的el
元素来包装您的#付款表单
元素
您的HTML、CoffeeScript结构应如下所示:
<div class='payment'>
<form id='payment-form'>...</form>
</div>
使用@$
查找元素时,它会开始查看视图的el
属性。所以基本上在这种情况下,它看起来像:
@$("#payment-form") === $(".payment #payment-form")
我猜测您的
#支付表单
超出了主干视图的范围11月6日前后您的代码发生了什么变化?什么都没有。代码已经保持了4个月。这就是让我惊讶的地方。这个错误是在stripe.js中从深层抛出的。Stripe支持说没有其他人报告过类似的问题。表单的HTML是什么样子的?错误消息表明,
正在触发问题。有任何主干、下划线、jQuery。。。发生升级?输入元素在我的付款表单中。这条线在过去4个月一直在那里。我所在的库没有版本更改。不确定stripe.js是否在内部依赖任何主干、下划线库,并且版本不匹配。我的付款表单不是el的直系子代,而是节点层次结构中的孙子。任何嵌套子项都应该仍在作用域中,对吗?是的,任何嵌套子项都应该在作用域中。无论如何,@$(“.
和$(“.
之间的唯一区别是它看起来在您的视图范围内。在初始化时,请尝试控制台.log(@$(“#付款表单”)
以确保您的付款表单在您的视图范围内。是的,我可以看到$(“#付款表单”)和@$(“付款表单”)都在范围内-这意味着它们都引用了相同的形式和数据值。我看到的唯一区别是“上下文”对象的值。其中一个是“文档”,而另一个是nil值。
class Payment extend Backbone.View
el: ".payment" // Here .payment is parent element to #payment-form
...
onPaymentSubmit: => ...
@$("#payment-form") === $(".payment #payment-form")