index.html 9.18 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
1
2
3
---
layout: examples
title: Checkout example
XhmikosR's avatar
XhmikosR committed
4
extra_css:
Martijn Cuppens's avatar
Martijn Cuppens committed
5
  - "form-validation.css"
XhmikosR's avatar
XhmikosR committed
6
extra_js:
7
  - src: "form-validation.js"
XhmikosR's avatar
XhmikosR committed
8
9
10
11
body_class: "bg-light"
---

<div class="container">
12
13
14
15
16
  <main>
    <div class="py-5 text-center">
      <img class="d-block mx-auto mb-4" src="/docs/{{< param docs_version >}}/assets/brand/bootstrap-logo.svg" alt="" width="72" height="57">
      <h2>Checkout form</h2>
      <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>
XhmikosR's avatar
XhmikosR committed
17
    </div>
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

    <div class="row g-3">
      <div class="col-md-5 col-lg-4 order-md-last">
        <h4 class="d-flex justify-content-between align-items-center mb-3">
          <span class="text-muted">Your cart</span>
          <span class="badge bg-secondary rounded-pill">3</span>
        </h4>
        <ul class="list-group mb-3">
          <li class="list-group-item d-flex justify-content-between lh-sm">
            <div>
              <h6 class="my-0">Product name</h6>
              <small class="text-muted">Brief description</small>
            </div>
            <span class="text-muted">$12</span>
          </li>
          <li class="list-group-item d-flex justify-content-between lh-sm">
            <div>
              <h6 class="my-0">Second product</h6>
              <small class="text-muted">Brief description</small>
            </div>
            <span class="text-muted">$8</span>
          </li>
          <li class="list-group-item d-flex justify-content-between lh-sm">
            <div>
              <h6 class="my-0">Third item</h6>
              <small class="text-muted">Brief description</small>
            </div>
            <span class="text-muted">$5</span>
          </li>
          <li class="list-group-item d-flex justify-content-between bg-light">
            <div class="text-success">
              <h6 class="my-0">Promo code</h6>
              <small>EXAMPLECODE</small>
            </div>
            <span class="text-success">−$5</span>
          </li>
          <li class="list-group-item d-flex justify-content-between">
            <span>Total (USD)</span>
            <strong>$20</strong>
          </li>
        </ul>

        <form class="card p-2">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Promo code">
            <button type="submit" class="btn btn-secondary">Redeem</button>
          </div>
        </form>
      </div>
      <div class="col-md-7 col-lg-8">
        <h4 class="mb-3">Billing address</h4>
        <form class="needs-validation" novalidate>
          <div class="row g-3">
            <div class="col-sm-6">
              <label for="firstName" class="form-label">First name</label>
              <input type="text" class="form-control" id="firstName" placeholder="" value="" required>
              <div class="invalid-feedback">
                Valid first name is required.
              </div>
Mark Otto's avatar
Mark Otto committed
77
            </div>
78

79
80
81
82
83
84
            <div class="col-sm-6">
              <label for="lastName" class="form-label">Last name</label>
              <input type="text" class="form-control" id="lastName" placeholder="" value="" required>
              <div class="invalid-feedback">
                Valid last name is required.
              </div>
Mark Otto's avatar
Mark Otto committed
85
86
            </div>

87
88
89
90
91
92
93
94
            <div class="col-12">
              <label for="username" class="form-label">Username</label>
              <div class="input-group">
                <span class="input-group-text">@</span>
                <input type="text" class="form-control" id="username" placeholder="Username" required>
              <div class="invalid-feedback">
                  Your username is required.
                </div>
95
              </div>
Mark Otto's avatar
Mark Otto committed
96
97
            </div>

98
99
100
101
102
103
            <div class="col-12">
              <label for="email" class="form-label">Email <span class="text-muted">(Optional)</span></label>
              <input type="email" class="form-control" id="email" placeholder="you@example.com">
              <div class="invalid-feedback">
                Please enter a valid email address for shipping updates.
              </div>
104
            </div>
Mark Otto's avatar
Mark Otto committed
105

106
107
108
109
110
111
            <div class="col-12">
              <label for="address" class="form-label">Address</label>
              <input type="text" class="form-control" id="address" placeholder="1234 Main St" required>
              <div class="invalid-feedback">
                Please enter your shipping address.
              </div>
112
            </div>
XhmikosR's avatar
XhmikosR committed
113

114
115
116
117
            <div class="col-12">
              <label for="address2" class="form-label">Address 2 <span class="text-muted">(Optional)</span></label>
              <input type="text" class="form-control" id="address2" placeholder="Apartment or suite">
            </div>
XhmikosR's avatar
XhmikosR committed
118

119
120
121
122
123
124
125
126
127
            <div class="col-md-5">
              <label for="country" class="form-label">Country</label>
              <select class="form-select" id="country" required>
                <option value="">Choose...</option>
                <option>United States</option>
              </select>
              <div class="invalid-feedback">
                Please select a valid country.
              </div>
Mark Otto's avatar
Mark Otto committed
128
            </div>
129

130
131
132
133
134
135
136
137
138
            <div class="col-md-4">
              <label for="state" class="form-label">State</label>
              <select class="form-select" id="state" required>
                <option value="">Choose...</option>
                <option>California</option>
              </select>
              <div class="invalid-feedback">
                Please provide a valid state.
              </div>
Mark Otto's avatar
Mark Otto committed
139
            </div>
140

141
142
143
144
145
146
            <div class="col-md-3">
              <label for="zip" class="form-label">Zip</label>
              <input type="text" class="form-control" id="zip" placeholder="" required>
              <div class="invalid-feedback">
                Zip code required.
              </div>
Mark Otto's avatar
Mark Otto committed
147
            </div>
XhmikosR's avatar
XhmikosR committed
148
          </div>
149

150
          <hr class="my-4">
XhmikosR's avatar
XhmikosR committed
151

152
          <div class="form-check">
153
154
            <input type="checkbox" class="form-check-input" id="same-address">
            <label class="form-check-label" for="same-address">Shipping address is the same as my billing address</label>
XhmikosR's avatar
XhmikosR committed
155
          </div>
156

157
          <div class="form-check">
158
159
            <input type="checkbox" class="form-check-input" id="save-info">
            <label class="form-check-label" for="save-info">Save this information for next time</label>
XhmikosR's avatar
XhmikosR committed
160
          </div>
161

162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
          <hr class="my-4">

          <h4 class="mb-3">Payment</h4>

          <div class="my-3">
            <div class="form-check">
              <input id="credit" name="paymentMethod" type="radio" class="form-check-input" checked required>
              <label class="form-check-label" for="credit">Credit card</label>
            </div>
            <div class="form-check">
              <input id="debit" name="paymentMethod" type="radio" class="form-check-input" required>
              <label class="form-check-label" for="debit">Debit card</label>
            </div>
            <div class="form-check">
              <input id="paypal" name="paymentMethod" type="radio" class="form-check-input" required>
              <label class="form-check-label" for="paypal">PayPal</label>
XhmikosR's avatar
XhmikosR committed
178
179
            </div>
          </div>
180

181
182
183
184
185
186
187
188
          <div class="row gy-3">
            <div class="col-md-6">
              <label for="cc-name" class="form-label">Name on card</label>
              <input type="text" class="form-control" id="cc-name" placeholder="" required>
              <small class="text-muted">Full name as displayed on card</small>
              <div class="invalid-feedback">
                Name on card is required
              </div>
Mark Otto's avatar
Mark Otto committed
189
            </div>
190

191
192
193
194
195
196
            <div class="col-md-6">
              <label for="cc-number" class="form-label">Credit card number</label>
              <input type="text" class="form-control" id="cc-number" placeholder="" required>
              <div class="invalid-feedback">
                Credit card number is required
              </div>
Mark Otto's avatar
Mark Otto committed
197
            </div>
198

199
200
201
202
203
204
205
206
207
208
209
210
211
212
            <div class="col-md-3">
              <label for="cc-expiration" class="form-label">Expiration</label>
              <input type="text" class="form-control" id="cc-expiration" placeholder="" required>
              <div class="invalid-feedback">
                Expiration date required
              </div>
            </div>

            <div class="col-md-3">
              <label for="cc-cvv" class="form-label">CVV</label>
              <input type="text" class="form-control" id="cc-cvv" placeholder="" required>
              <div class="invalid-feedback">
                Security code required
              </div>
Mark Otto's avatar
Mark Otto committed
213
            </div>
XhmikosR's avatar
XhmikosR committed
214
          </div>
215

216
          <hr class="my-4">
217

218
          <button class="w-100 btn btn-primary btn-lg" type="submit">Continue to checkout</button>
219
220
        </form>
      </div>
Mark Otto's avatar
Mark Otto committed
221
    </div>
222
  </main>
XhmikosR's avatar
XhmikosR committed
223
224

  <footer class="my-5 pt-5 text-muted text-center text-small">
Jonathan's avatar
Jonathan committed
225
    <p class="mb-1">&copy; 2017–{{< year >}} Company Name</p>
XhmikosR's avatar
XhmikosR committed
226
227
228
229
230
231
232
    <ul class="list-inline">
      <li class="list-inline-item"><a href="#">Privacy</a></li>
      <li class="list-inline-item"><a href="#">Terms</a></li>
      <li class="list-inline-item"><a href="#">Support</a></li>
    </ul>
  </footer>
</div>