javascript - 如何定位侧加载的 HTML

标签 javascript jquery stripe-payments checkout

我正在使用名为 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/

相关文章:

javascript - 一个 JavaScript 对象可以有一个原型(prototype)链,同时也是一个函数吗?

jquery - asp.net webforms ajax 更新 gridview

javascript - jQuery 创建一个元素并获取高度

javascript - 在 Cordova 中使用 Stripe Checkout

ios - Stripe - STPPaymentCardTextField - 如何添加邮政编码字段?

javascript - 我不想看到网址中的所有内容

javascript - 如何向此选项卡式 jQuery 内容添加淡入淡出效果?

javascript - 有没有办法阻止 iframe 重定向父窗口,但是 "top level"重定向仍然在 iframe 本身内部工作?

javascript - 主干触发事件

安卓 Stripe 集成