簡體   English   中英

Javascript / Jquery將變量拆分為兩個用於條帶集成

[英]Javascript / Jquery Split Variable Into Two for Stripe Integration

我提前道歉,因為我對PHP相當不錯,但是當談到javascript和jquery時,我真的有點無能為力。 我有以下代碼,我從這里的示例編輯https://gist.github.com/boucher/1750375 ,並希望將信用卡exp月和年字段合並為一個。 問題是將它們分開以與條帶示例代碼一起使用,在代碼中它創建一個令牌。 顯然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
            });
        });

這不行。

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

改用它:

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

“cc”也是id而不是類。 你需要使用:

$("#cc").val()

並不是:

$(".cc").val()
document.getElementById('date-exp').val

是jQuery和DOM成語的混合體。 它應該是:

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

要么:

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

還要考慮檢查/實際上是否在值中(即expArray.length===2 )。

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將自動從隱藏字段中獲取值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM