Stripe Elementsはこのサイトにあるサンプルを使えば手軽に始められます。
https://stripe.com/docs/stripe-js
ただ、この例のバリデーションでは全項目の入力を待つことができず、例えばカード番号だけ入力した状態でも送信できてしまいます。
今回はカード番号、有効期限、CVCなど全項目の入力がある場合のみ、Submitボタンを活性化させるような方法をご紹介します。
このサイトのjsのサンプルにあるchangeイベントの箇所
https://stripe.com/docs/stripe-js
card.on('change', function(event) { var displayError = document.getElementById('card-errors'); if (event.error) { displayError.textContent = event.error.message; } else { displayError.textContent = ''; } });
この中で、cahngeイベントが走った場合に、全ての入力項目が揃うと
event.complete
という変数がtrueになるため、それを使ってボタンを活性化させます。
例えばsubmitボタンのタグにdisapbled属性をつけて最初はボタンを無効化します。そしてchangeイベントでdisabledをfalseにしてボタンを有効化します。
card.on('change', function(event) { var displayError = document.getElementById('card-errors'); if (event.error) { displayError.textContent = event.error.message; } else { displayError.textContent = ''; } //ここを追加 if (event.complete == true) { var formsubmit = document.getElementById('submitボタンのID'); formsubmit.disabled = false; } });
参考にした情報
https://github.com/stripe/react-stripe-elements/issues/283