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