<template> <form id="payment-form" action=""> <label for="name">Name on Card</label> <input @input="$emit('updateBillingName', $event)" id="billing-name" type="name"> <div id="card-element"></div> <div id="card-errors"></div> <div id=save-card> <input name="save-card" type="checkbox" checked="true"> <label for="">Save Card</label> </div> </form> </template> <script> function mountPaymentForm() { let card = this.stripe.elements().create('card') card.mount('#card-element') this.$emit('setCard', card) card.on('change', function(event) { let displayError = document.getElementById('card-errors'); if (event.error) { displayError.textContent = event.error.message; displayError.textContent = ''; this.$emit('cardValid', true) } else { displayError.textContent = ''; this.$emit('cardValid', true) } }.bind(this)); } export default { data() { return {billingName: null} }, methods: {mountPaymentForm}, props: ['stripe'], mounted: mountPaymentForm, emits: ['updateBillingName', 'cardValid', 'setCard'] } </script>