2014-12-03 50 views
0

我在使用條紋處理信用卡時在瀏覽器中出現此錯誤。突然發生條紋信用卡處理錯誤

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') 

的處理經過。這有什麼解釋嗎?

之前的一個計算器問題How to fit Stripe into Backbone View? 表明@ $是正確的路要走,@ $正在爲我工​​作,直到最近。

有沒有其他人在Stripe上遇到過這個問題?

+0

什麼在你的代碼改變周圍11月6日的範圍之內? – 2014-12-03 17:28:32

+0

什麼也沒有。該代碼在4個月內一直相同。這是令我驚訝的。這個錯誤是從stripe.js的內部引發的。條紋支持說沒有其他人報告過類似的問題。 – user510011 2014-12-03 17:53:17

+0

表單的HTML看起來像什麼?錯誤消息表明,一個''觸發了這個問題。有任何Backbone,Underscore,jQuery,...升級發生? – 2014-12-03 18:54:30

回答

1

如果onPaymentSubmit是您班級中的一種方法,請確保您的班級擁有包含#payment-form元素的正確el元素。

你的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: => ... 

當你查找一個元素與@$它開始尋找您查看的el物業內。所以基本上在這種情況下,它看起來像:

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

我buest的猜測是,你#payment-form是你骨幹查看

+0

我的支付表單不是el的直接子節點,而是節點層次結構中的孫子。任何嵌套的孩子應該仍然在範圍內,對吧? – user510011 2014-12-03 17:35:45

+0

是的,任何嵌套的子應該在範圍內。無論如何,'@ $(「..'和'$(」..')之間的唯一區別在於它看起來在你的視圖範圍內。初始化時嘗試'console.log(@ $(「#payment-form」) )'以確保您的付款表單在您的觀點範圍內。 – drinchev 2014-12-04 11:11:34

+0

是的,我可以看到$('#payment-form')和@ $('payment-form')都在範圍之內 - 這意味着這兩個都指與數據值相同的表單。我看到的唯一區別是「上下文」對象的價值。其中一個是「文件」,而另一個是沒有價值的。 – user510011 2014-12-04 14:22:44