Javascript 如何针对侧面加载的HTML
我正在使用一个名为Stripe的支付网关,专门使用它的系统 我已经设法让购物车工作,它创建客户,订单和付款时,我需要根据产品。然而,我不是非常面向javascript的,但是我想集成一种自动将用户电子邮件插入到checkout email字段的方法。我试过这个:Javascript 如何针对侧面加载的HTML,javascript,jquery,stripe-payments,checkout,Javascript,Jquery,Stripe Payments,Checkout,我正在使用一个名为Stripe的支付网关,专门使用它的系统 我已经设法让购物车工作,它创建客户,订单和付款时,我需要根据产品。然而,我不是非常面向javascript的,但是我想集成一种自动将用户电子邮件插入到checkout email字段的方法。我试过这个: $(document).ready(function() { $('.stripe-button-el').click(function() { setTimeout(function() {
$(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);
}
$(文档).ready(函数(){
var用户{'email':};
//将此电子邮件放入“签出电子邮件”属性中
$('input[type=email]').attr('value',user.email);
}
感谢@yomisimie在评论中提供了这一点,有一种“高级”方式添加包含“电子邮件”字段的按钮:
handler.open({
email: 'some@email.com'
});
可以在中找到。似乎是在回发上添加元素,因此我认为您必须在doc ready块中进行检查,以查看元素是否存在。类似于以下内容:
$(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()
方法来获取输入
。检查可选配置选项@Liam似乎不是。可能是一些表单提交的东西。如果动态加载,则在单击该按钮之前不会将HTML添加到网站。请使用.on()
这是一个添加的表单,其输入字段上的ID是唯一的(每次都会更改)所以很难瞄准这样的目标,我正在寻找一种方法,用条纹配置@ LiamDid,你认为他们这样做有很好的理由吗?也就是说,为了防止XSS攻击?我肯定会在其他领域,如背景CSS等,因为这是不可定制的)谢谢你!