Javascript 未捕获类型错误:对象#<;HTMLInputElement>;没有方法';processCard&x27;
我正在尝试配置一个coffeescript类来管理条带支付。我的解决方案是基于 这是我的密码:Javascript 未捕获类型错误:对象#<;HTMLInputElement>;没有方法';processCard&x27;,javascript,jquery,class,coffeescript,Javascript,Jquery,Class,Coffeescript,我正在尝试配置一个coffeescript类来管理条带支付。我的解决方案是基于 这是我的密码: class Subscription count = 0 page = createForm: "form#new_subscription" createButton: 'input#create_subscription[type=submit]' cardNumber: '#card_number' cardCode: '#card_code'
class Subscription
count = 0
page =
createForm: "form#new_subscription"
createButton: 'input#create_subscription[type=submit]'
cardNumber: '#card_number'
cardCode: '#card_code'
cardMonth: '#card_month'
cardYear: '#card_year'
stripeError: '#stripe_error'
setupForm: ->
console.log "binding to submit"
$(page.createButton).click (e) ->
$(page.createButton).attr('disabled', true)
@processCard()
return false
processCard: ->
console.log "processing card"
card =
number: $(page.cardNumber).val()
cvc: $(page.cardCode).val()
expMonth: $(page.cardMonth).val()
expYear: $(page.cardYear).val()
Stripe.card.createToken(card, subscription.handleStripeResponse);
handleStripeResponse: (status, response) ->
if response.error
console.log "error"
$(page.stripeError).text(response.error.message)
$(page.createButton).attr('disabled', false)
alert ("bla")
else
alert("success: " + response.id)
jQuery ->
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
subs = new Subscription
subs.setupForm()
问题是,当我单击“提交”按钮时,会出现异常:
Uncaught TypeError: Object #<HTMLInputElement> has no method 'processCard'
uncaughttypeerror:对象#没有方法“processCard”
我相信这是因为在click事件调用的方法中,self
是触发事件的html元素。而我自己需要javascript对象
有没有关于如何解决这个问题的线索
谢谢,在没有测试实际代码的情况下,看起来您的作用域搞错了
setupForm: ->
console.log "binding to submit"
$(page.createButton).click (e) =>
$(page.createButton).attr('disabled', true)
@processCard()
return false
通过使用$(page.createButton)中的胖箭头(=>
),单击(e)=>
,您将外部作用域传递到回调内部,然后可以调用@processCard()
(其中,@
将引用新订阅
实例,而不是jQuery此
引用,它是一个HTMLInputElement
)