Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

245
Visualizações
Cómo aparecer dos elementos de rayas en una sola página

Me gustaría usar dos formas de pago (stripe.js) en el mismo html. Solo se puede especificar un if, por lo que aparecerá el formulario de pago que se llama primero, pero el otro no.

¿Hay alguna manera de implementar?

El elemento Stripe se montará en el primero.

 <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>
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Esto no es posible con Stripe Elements. Si intenta crear dos elementos del mismo tipo (como el elemento de la card ) en la misma página, obtendrá este error:

 Can only create one Element of type card

Necesitaría usar un solo elemento de tarjeta, usar páginas separadas, usar elementos <iframe> o algo similar como solución alternativa.

about 4 years ago · Juan Pablo Isaza Relatório

0

He trabajado con Stripe varias veces, pero no lo había hecho antes, esto podría funcionar para usted o darle una idea sobre cómo seguir adelante.

La identificación html tiene que ser única en la página. Por eso solo se fabrica el primero.

 <script src="https://js.stripe.com/v3/"></script> // first one <div id="card-number-element-1"></div> // another one <div id="card-number-element-2"></div> <script> var cardNumberElement = elements.create("cardNumber"); if (document.getElementById("card-number-element-1")) { cardNumberElement.mount("#card-number-element-1"); } if (document.getElementById("card-number-element-2")) { cardNumberElement.mount("#card-number-element-2"); } </script>

Sin embargo, es posible que esto no funcione con Stripe, no estoy seguro de si admiten múltiples elementos como este.

about 4 years ago · Juan Pablo Isaza Relatório

0

Problemas con tu código:

  1. Nunca debe haber varios elementos HTML con la misma id en la misma página, por lo que este es un HTML incorrecto. (No romperá la página, pero como verá en el siguiente paso, causará confusión)
 <div id="card-number-element"></div> <div id="card-number-element"></div>
  1. document.getElementById siempre devolverá un solo elemento. Entonces document.getElementById("card-number-element") solo devolverá el primer elemento. Incluso cuando hay dos.

Una posible solución:

  1. use valores de id únicos. Como elemento-número-de-tarjeta card-number-element-1 card-number-element-2
  2. Habilite la selección de ambos elementos. Entonces, tal vez agreguemos la misma class a ambos elementos y usemos getElementsByClasName para seleccionarlos a ambos.
  3. Ahora, la única pregunta que queda es cómo funciona cardNumberElement.mount : ¿requiere un identificador único por elemento? Déjame ADIVINAR que podría ser. Así que tendré una id única por elemento y la pasaré a la función de mount .

Aquí está mi intento.

 <script src="https://js.stripe.com/v3/"></script> <div id="card-number-element-1"></div> <div id="card-number-element-2"></div> <script> var cardNumberElement = elements.create("cardNumber"); var elementsToMountTo = document.getElementsByClassName("card-number-element"); elementsToMountTo.forEach((element) => { cardNumberElement.mount("#" + element.id); } </script>

PD: No he investigado cómo funciona Stripe, así que no sé si la línea cardNumberElement.mount funcionará si la ejecutas dos veces así.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda