javascript - Uncaught TypeError: Object #<HTMLInputElement> has no method 'processCard' -
i'm trying configure coffeescript class manage stripe payments. i'm basing solution on this tutorial.
here's 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 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()
the problem when click on submit button, exception:
uncaught typeerror: object #<htmlinputelement> has no method 'processcard'
i believe caused fact in method called click event self
html element triggered event. while self need javascript object.
any clue on how fix this?
thanks,
without testing actual code, looks got scope wrong.
setupform: -> console.log "binding submit" $(page.createbutton).click (e) => $(page.createbutton).attr('disabled', true) @processcard() return false
by using fat arrow (=>
) in $(page.createbutton).click (e) =>
pass outer scope this
inside callback , can call @processcard()
(where @
refer new subscription
instance , not jquery this
reference htmlinputelement
).
Comments
Post a Comment