2016-12-05 4 views
1

나는 checkout cart 시스템을 사용하여 Stripe라는 지불 게이트웨이로 작업하고 있습니다.사이드로드 된 HTML을 대상으로하는 방법

나는 카트를 작동시킬 수 있었고, 제품에 따라 필요할 때 고객, 주문 및 지불을 생성합니다. 그러나 나는 자바 스크립트 지향적이지는 않지만 자동으로 사용자 이메일을 체크 아웃 이메일 필드에 삽입하는 방법을 통합하려고합니다. 나는 이것을 시도했다 :

$(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이 사이트에 추가되지 않기 때문에 속성에 액세스 할 수 없기 때문입니다. 나는 이것이 당신이 카드 정보에 접근하는 것을 막기 위해 보안을 위해 행해졌다는 것을 알고 있지만 이것에 대한 어떤 방법이 있습니까?

나는 사용자가 객체에 저장된 이메일을 보내, 그래서 난 그냥 말하고 싶은 것은 수행 코멘트에이 공급 @yomisimie하는

$(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 준비 블록에 요소가 있는지 확인해야합니다. 이런 식으로 뭔가 :

$(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')); 
    } 
}); 

은 당신이 대신 input를 얻을 수 .find() 방법을 사용할 필요가 날 것으로 보인다.

+0

에 답변했습니다. 배경 CSS 등 다른 분야에서도이 설정을 시도 할 것입니다. 맞춤 설정이 불가능하기 때문입니다.) 감사합니다! – KDOT

0

감사의를 추가하는 '고급'방법은 에 '이메일'필드가 포함 버튼 :

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

정당 documentation에서 찾을 수있다.