2016-12-05 15 views
1

我正在使用名爲Stripe的支付網關,專門使用它的checkout cart系統。如何定位側裝的HTML

我已經設法使購物車工作,它可以根據產品創建客戶,訂單和付款。不過,我並不是很注重JavaScript,但想要集成一種將用戶電子郵件自動插入到結帳電子郵件字段的方式。我試過這個:

$(document).ready(function() { 
    $('.stripe-button-el').click(function() { 
     setTimeout(function() { 
      $('.Fieldset').closest('.Fieldset-input').attr('value', '[email protected]'); 
      console.log('Value 1: ' + $('.Fieldset-input').attr('value')); 
      console.log('Value 2: ' + $('.Fieldset').closest('.Fieldset-input') .attr('value')); 
     }, 2000); 
    }); 
}); 

但是,這兩個值都是未定義的。我添加setTimeout()的原因是因爲結帳是由一個按鈕觸發的,所以在單擊該按鈕之前,HTML不會添加到該網站,因此我無法訪問其屬性。我知道這是爲了安全起見,以防止您訪問卡信息,但有沒有辦法解決這個問題?

我有用戶的電子郵件存儲在一個對象,所以我只想說事:

$(document).ready(function() { 
    var user { 'email': <?= $email ?> }; 

    // put this email inside the checkout email property 
    $('input[type=email]').attr('value', user.email); 
} 
+2

檢查可選的配置選項[這裏](https://stripe.com/docs/checkout#integration-custom) – yomisimie

+1

@Liam似乎不是。可能是一些表單提交的東西。 – Jai

+0

*在點擊該按鈕之前HTML不會被添加到該網站*如果它是動態加載的,請使用'.on()' – Liam

回答

1

似乎它是在回發中添加元素,所以我認爲您必須檢查doc ready塊以查看元素是否存在。事情是這樣的:

$(document).ready(function() { 
    if ($('.Fieldset').find('.Fieldset-input').is(':visible')) { 
    $('.Fieldset').find('.Fieldset-input').attr('value', '[email protected]'); 
    console.log('Value 1: ' + $('.Fieldset-input').attr('value')); 
    console.log('Value 2: ' + $('.Fieldset').find('.Fieldset-input').attr('value')); 
    } 
}); 

,並在我看來,你必須使用.find()方法來獲取input代替。

+0

我一定會嘗試在其他領域,如背景CSS等,因爲這是不可定製的;)謝謝你! – KDOT

0

感謝@yomisimie在評論供應這一點,有添加的「高級」方式包含「電子郵件」字段的按鈕:

handler.open({ 
    email: '[email protected]' 
}); 

哪一個可以在documentation中找到。