我想在同一个html上使用两个支付表单(stripe.js)。如果只能指定一个,那么第一个被调用的支付表单会出现,而另一个不会。
有没有办法实施?
条带元素将装载到第一个条带元素。
<script src="https://js.stripe.com/v3/"></script>
// first one -> appeared
<div id="card-number-element"></div>
// another one -> not appeared
<div id="card-number-element"></div>
<script>
var cardNumberElement = elements.create("cardNumber");
if (document.getElementById("card-number-element")) {
cardNumberElement.mount("#card-number-element");
}
</script>
5条答案
按热度按时间c3frrgcw1#
如果您尝试在同一个页面上创建两个相同类型的元素(如
card
元素),您将收到此错误:您可能需要使用单个Card Element、使用单独的页面、使用
<iframe>
元素或类似的方法作为解决方法。rlcwz9us2#
Problems with your code:
id
on the same page so this is incorrect HTML. (It will not break the page but as you see in the next step it'll cause confusion)document.getElementById
will always just return a single element. Sodocument.getElementById("card-number-element")
will only return the first element. Even when there are two.One possible solution:
id
values. Likecard-number-element-1
andcard-number-element-2
class
to both elements and usegetElementsByClasName
to select them both.cardNumberElement.mount
works - does it require a unique identifier per element? Let me just GUESS that it might. So I'm gonna have a uniqueid
per element and pass that to themount
function.Here's my attempt.
PS: I have not looked into how Stripe works so I dunno if the line
cardNumberElement.mount
will work if you run it two times like this.tvz2xvvm3#
我曾与条纹几次,但没有这样做之前,这可能会为您工作或给你一个想法前进。
这可能不适用于Stripe,但是,不确定它们是否支持这样的多个元素。
wyyhbhjk4#
为此,我卸载了当前版本并安装了新版本:
在这里,你将做类似于前一个,但这一次,第一个卡元素将显示,第二个将消失
9o685dep5#
条带化只允许一个已挂载的元素。您需要卸载第一个元素才能启用第二个元素。
HTML语言
Java脚本
你可以在这里试试我的演示:Stripe : 2 forms on a single page