我正在使用名为 Stripe 的支付网关,特别使用其 checkout cart系统。
我已经成功地让购物车正常工作,它根据产品的需要在我需要时创建客户、订单和付款。但是,我不太面向 javascript,但希望集成一种自动将用户电子邮件插入结帐电子邮件字段的方法。我已经尝试过:
$(document).ready(function() {
$('.stripe-button-el').click(function() {
setTimeout(function() {
$('.Fieldset').closest('.Fieldset-input').attr('value', 'some@email.com');
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);
}
最佳答案
似乎是在回发时添加元素,所以在我看来,您必须检查文档就绪 block 以查看该元素是否存在。像这样的事情:
$(document).ready(function() {
if ($('.Fieldset').find('.Fieldset-input').is(':visible')) {
$('.Fieldset').find('.Fieldset-input').attr('value', 'some@email.com');
console.log('Value 1: ' + $('.Fieldset-input').attr('value'));
console.log('Value 2: ' + $('.Fieldset').find('.Fieldset-input').attr('value'));
}
});
在我看来,您必须使用 .find()
方法来获取 input
。
关于javascript - 如何定位侧加载的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40977717/