4

私はPHPにかなり精通しているので、前もってお詫びしますが、javascriptとjqueryに関しては、私は本当に少し無知です。ここにある例から編集した次のコードがありますhttps://gist.github.com/boucher/1750375、およびクレジットカードのexp月と年フィールドを1つに結合したかった。問題は、トークンを作成するストライプ サンプル コードで使用するためにそれらを分割し直すことです。明らかに、github の例は完全に機能しますが、編集しようとすると、スクリプトは何かが間違っているようには動作しませんが、ストライプに送信されず、以前のようにトークンを取得しません。

$(document).ready(function() {
            $("#payment-form").submit(function(event) {
                // disable the submit button to prevent repeated clicks
                $('.submit-button').attr("disabled", "disabled");
                var expgroup = document.getElementById('date-exp').val;
                var expArray = expgroup.split( '/' );
                var expmm = ( expArray[ 0 ] );
                var expyy = ( expArray[ 1 ] );
                // createToken returns immediately - the supplied callback submits the form if there are no errors
                Stripe.createToken({
                    number: $('.cc').val(),
                    cvc: $('.card-cvc').val(),
                    exp_month: expmm,
                    exp_year: expyy
                }, stripeResponseHandler);
                return false; // submit from callback
            });
        });
4

3 に答える 3

4

これはうまくいきません。

var expgroup = document.getElementById('date-exp').val;

代わりにこれを使用してください:

var expgroup = $("#date-exp").val()

また、「cc」は ID であり、クラスではありません。以下を使用する必要があります。

$("#cc").val()

ではない:

$(".cc").val()
于 2013-11-05T16:12:45.953 に答える
3
document.getElementById('date-exp').val

jQuery と DOM イディオムの混合物です。次のいずれかである必要があります。

document.getElementById('date-exp').value

また:

$('#date-exp').val()

また、実際に値に含まれていることを確認することも検討してください/(つまり、そのexpArray.length===2)。

于 2013-11-05T16:21:02.397 に答える
1

Stripe の jquery.payment ライブラリには、この関数が既に組み込まれています。

https://github.com/stripe/jquery.payment#paymentcardexpiryvalstring-and-fnpaymentcardexpiryval

ここにいくつかのサンプルコードがあります。

# form fields on HTML.ERB page
<%= form_tag url do %>
  <%= text_field_tag :expiry, nil, name: nil, placeholder: "MM / YYYY", size: 9, id: "stripe-card-expiry" %>
  <%= hidden_field_tag :exp_month, nil, name: nil, id: "stripe-card-exp-month", data: { stripe: "exp-month" } %>
  <%= hidden_field_tag :exp_year, nil, name: nil, id: "stripe-card-exp-year", data: { stripe: "exp-year" } %>
  ...other fields and submit...
<% end %>

# Split single expiration field into month/year
expiration = $("#stripe-card-expiry").payment("cardExpiryVal") # => {month: "value", year: "value"}
$("#stripe-card-exp-month").val(expiration.month || 0)
$("#stripe-card-exp-year").val(expiration.year || 0)

# Submit to Stripe.com and get token
Stripe.card.createToken($("#form-id"), handleStripeResponse)

使用している Stripe.js のバージョンに応じて、「data-stripe...」アイテムを使用すると、Stripe.js は隠しフィールドから値を自動的に取得します。

于 2014-01-18T00:13:05.847 に答える