Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

244
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda