index.html 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. ---
  2. layout: examples
  3. title: Checkout example
  4. extra_css:
  5. - "form-validation.css"
  6. extra_js:
  7. - src: "form-validation.js"
  8. body_class: "bg-light"
  9. ---
  10. <div class="container">
  11. <main>
  12. <div class="py-5 text-center">
  13. <img class="d-block mx-auto mb-4" src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo.svg" alt="" width="72" height="57">
  14. <h2>Checkout form</h2>
  15. <p class="lead">Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.</p>
  16. </div>
  17. <div class="row g-5">
  18. <div class="col-md-5 col-lg-4 order-md-last">
  19. <h4 class="d-flex justify-content-between align-items-center mb-3">
  20. <span class="text-primary">Your cart</span>
  21. <span class="badge bg-primary rounded-pill">3</span>
  22. </h4>
  23. <ul class="list-group mb-3">
  24. <li class="list-group-item d-flex justify-content-between lh-sm">
  25. <div>
  26. <h6 class="my-0">Product name</h6>
  27. <small class="text-muted">Brief description</small>
  28. </div>
  29. <span class="text-muted">$12</span>
  30. </li>
  31. <li class="list-group-item d-flex justify-content-between lh-sm">
  32. <div>
  33. <h6 class="my-0">Second product</h6>
  34. <small class="text-muted">Brief description</small>
  35. </div>
  36. <span class="text-muted">$8</span>
  37. </li>
  38. <li class="list-group-item d-flex justify-content-between lh-sm">
  39. <div>
  40. <h6 class="my-0">Third item</h6>
  41. <small class="text-muted">Brief description</small>
  42. </div>
  43. <span class="text-muted">$5</span>
  44. </li>
  45. <li class="list-group-item d-flex justify-content-between bg-light">
  46. <div class="text-success">
  47. <h6 class="my-0">Promo code</h6>
  48. <small>EXAMPLECODE</small>
  49. </div>
  50. <span class="text-success">−$5</span>
  51. </li>
  52. <li class="list-group-item d-flex justify-content-between">
  53. <span>Total (USD)</span>
  54. <strong>$20</strong>
  55. </li>
  56. </ul>
  57. <form class="card p-2">
  58. <div class="input-group">
  59. <input type="text" class="form-control" placeholder="Promo code">
  60. <button type="submit" class="btn btn-secondary">Redeem</button>
  61. </div>
  62. </form>
  63. </div>
  64. <div class="col-md-7 col-lg-8">
  65. <h4 class="mb-3">Billing address</h4>
  66. <form class="needs-validation" novalidate>
  67. <div class="row g-3">
  68. <div class="col-sm-6">
  69. <label for="firstName" class="form-label">First name</label>
  70. <input type="text" class="form-control" id="firstName" placeholder="" value="" required>
  71. <div class="invalid-feedback">
  72. Valid first name is required.
  73. </div>
  74. </div>
  75. <div class="col-sm-6">
  76. <label for="lastName" class="form-label">Last name</label>
  77. <input type="text" class="form-control" id="lastName" placeholder="" value="" required>
  78. <div class="invalid-feedback">
  79. Valid last name is required.
  80. </div>
  81. </div>
  82. <div class="col-12">
  83. <label for="username" class="form-label">Username</label>
  84. <div class="input-group has-validation">
  85. <span class="input-group-text">@</span>
  86. <input type="text" class="form-control" id="username" placeholder="Username" required>
  87. <div class="invalid-feedback">
  88. Your username is required.
  89. </div>
  90. </div>
  91. </div>
  92. <div class="col-12">
  93. <label for="email" class="form-label">Email <span class="text-muted">(Optional)</span></label>
  94. <input type="email" class="form-control" id="email" placeholder="you@example.com">
  95. <div class="invalid-feedback">
  96. Please enter a valid email address for shipping updates.
  97. </div>
  98. </div>
  99. <div class="col-12">
  100. <label for="address" class="form-label">Address</label>
  101. <input type="text" class="form-control" id="address" placeholder="1234 Main St" required>
  102. <div class="invalid-feedback">
  103. Please enter your shipping address.
  104. </div>
  105. </div>
  106. <div class="col-12">
  107. <label for="address2" class="form-label">Address 2 <span class="text-muted">(Optional)</span></label>
  108. <input type="text" class="form-control" id="address2" placeholder="Apartment or suite">
  109. </div>
  110. <div class="col-md-5">
  111. <label for="country" class="form-label">Country</label>
  112. <select class="form-select" id="country" required>
  113. <option value="">Choose...</option>
  114. <option>United States</option>
  115. </select>
  116. <div class="invalid-feedback">
  117. Please select a valid country.
  118. </div>
  119. </div>
  120. <div class="col-md-4">
  121. <label for="state" class="form-label">State</label>
  122. <select class="form-select" id="state" required>
  123. <option value="">Choose...</option>
  124. <option>California</option>
  125. </select>
  126. <div class="invalid-feedback">
  127. Please provide a valid state.
  128. </div>
  129. </div>
  130. <div class="col-md-3">
  131. <label for="zip" class="form-label">Zip</label>
  132. <input type="text" class="form-control" id="zip" placeholder="" required>
  133. <div class="invalid-feedback">
  134. Zip code required.
  135. </div>
  136. </div>
  137. </div>
  138. <hr class="my-4">
  139. <div class="form-check">
  140. <input type="checkbox" class="form-check-input" id="same-address">
  141. <label class="form-check-label" for="same-address">Shipping address is the same as my billing address</label>
  142. </div>
  143. <div class="form-check">
  144. <input type="checkbox" class="form-check-input" id="save-info">
  145. <label class="form-check-label" for="save-info">Save this information for next time</label>
  146. </div>
  147. <hr class="my-4">
  148. <h4 class="mb-3">Payment</h4>
  149. <div class="my-3">
  150. <div class="form-check">
  151. <input id="credit" name="paymentMethod" type="radio" class="form-check-input" checked required>
  152. <label class="form-check-label" for="credit">Credit card</label>
  153. </div>
  154. <div class="form-check">
  155. <input id="debit" name="paymentMethod" type="radio" class="form-check-input" required>
  156. <label class="form-check-label" for="debit">Debit card</label>
  157. </div>
  158. <div class="form-check">
  159. <input id="paypal" name="paymentMethod" type="radio" class="form-check-input" required>
  160. <label class="form-check-label" for="paypal">PayPal</label>
  161. </div>
  162. </div>
  163. <div class="row gy-3">
  164. <div class="col-md-6">
  165. <label for="cc-name" class="form-label">Name on card</label>
  166. <input type="text" class="form-control" id="cc-name" placeholder="" required>
  167. <small class="text-muted">Full name as displayed on card</small>
  168. <div class="invalid-feedback">
  169. Name on card is required
  170. </div>
  171. </div>
  172. <div class="col-md-6">
  173. <label for="cc-number" class="form-label">Credit card number</label>
  174. <input type="text" class="form-control" id="cc-number" placeholder="" required>
  175. <div class="invalid-feedback">
  176. Credit card number is required
  177. </div>
  178. </div>
  179. <div class="col-md-3">
  180. <label for="cc-expiration" class="form-label">Expiration</label>
  181. <input type="text" class="form-control" id="cc-expiration" placeholder="" required>
  182. <div class="invalid-feedback">
  183. Expiration date required
  184. </div>
  185. </div>
  186. <div class="col-md-3">
  187. <label for="cc-cvv" class="form-label">CVV</label>
  188. <input type="text" class="form-control" id="cc-cvv" placeholder="" required>
  189. <div class="invalid-feedback">
  190. Security code required
  191. </div>
  192. </div>
  193. </div>
  194. <hr class="my-4">
  195. <button class="w-100 btn btn-primary btn-lg" type="submit">Continue to checkout</button>
  196. </form>
  197. </div>
  198. </div>
  199. </main>
  200. <footer class="my-5 pt-5 text-muted text-center text-small">
  201. <p class="mb-1">&copy; 2017–{{< year >}} Company Name</p>
  202. <ul class="list-inline">
  203. <li class="list-inline-item"><a href="#">Privacy</a></li>
  204. <li class="list-inline-item"><a href="#">Terms</a></li>
  205. <li class="list-inline-item"><a href="#">Support</a></li>
  206. </ul>
  207. </footer>
  208. </div>