2016-12-05 1 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

Кажется, что он добавляет элементы в postback, поэтому, на мой взгляд, вы должны иметь чек в блоке готовности документа, чтобы узнать, существует ли этот элемент. Что-то вроде этого:

$(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.