mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-14 02:24:00 +01:00
269 lines
12 KiB
HTML
269 lines
12 KiB
HTML
|
<!doctype html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
|
<meta name="description" content="">
|
||
|
<meta name="author" content="">
|
||
|
<link rel="icon" href="../../../../favicon.ico">
|
||
|
|
||
|
<title>Checkout example for Bootstrap</title>
|
||
|
|
||
|
<!-- Bootstrap core CSS -->
|
||
|
<link href="../../../../dist/css/bootstrap.min.css" rel="stylesheet">
|
||
|
|
||
|
<!-- Custom styles for this template -->
|
||
|
<link href="form-validation.css" rel="stylesheet">
|
||
|
</head>
|
||
|
|
||
|
<body class="bg-light">
|
||
|
|
||
|
<div class="container">
|
||
|
<div class="py-5 text-center">
|
||
|
<img class="d-block mx-auto mb-4" src="https://getbootstrap.com/assets/brand/bootstrap-solid.svg" alt="" width="72" height="72">
|
||
|
<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>
|
||
|
</div>
|
||
|
|
||
|
<div class="row">
|
||
|
<div class="col-md-4 order-md-2 mb-4">
|
||
|
<h4 class="d-flex justify-content-between align-items-center mb-3">
|
||
|
<span class="text-muted">Your cart</span>
|
||
|
<span class="badge badge-secondary badge-pill">3</span>
|
||
|
</h4>
|
||
|
<ul class="list-group mb-3">
|
||
|
<li class="list-group-item d-flex justify-content-between lh-condensed">
|
||
|
<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-condensed">
|
||
|
<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-condensed">
|
||
|
<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">
|
||
|
<div class="input-group-append">
|
||
|
<button type="submit" class="btn btn-secondary">Redeem</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</form>
|
||
|
</div>
|
||
|
<div class="col-md-8 order-md-1">
|
||
|
<h4 class="mb-3">Billing address</h4>
|
||
|
<form class="needs-validation" novalidate>
|
||
|
<div class="row">
|
||
|
<div class="col-md-6 mb-3">
|
||
|
<label for="firstName">First name</label>
|
||
|
<input type="text" class="form-control" id="firstName" placeholder="" value="" required>
|
||
|
<div class="invalid-feedback">
|
||
|
Valid first name is required.
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="col-md-6 mb-3">
|
||
|
<label for="lastName">Last name</label>
|
||
|
<input type="text" class="form-control" id="lastName" placeholder="" value="" required>
|
||
|
<div class="invalid-feedback">
|
||
|
Valid last name is required.
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<div class="mb-3">
|
||
|
<label for="username">Username</label>
|
||
|
<div class="input-group">
|
||
|
<div class="input-group-prepend">
|
||
|
<span class="input-group-text">@</span>
|
||
|
</div>
|
||
|
<input type="text" class="form-control" id="username" placeholder="Username" required>
|
||
|
<div class="invalid-feedback" style="width: 100%;">
|
||
|
Your username is required.
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<div class="mb-3">
|
||
|
<label for="email">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>
|
||
|
</div>
|
||
|
|
||
|
<div class="mb-3">
|
||
|
<label for="address">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>
|
||
|
</div>
|
||
|
|
||
|
<div class="mb-3">
|
||
|
<label for="address2">Address 2 <span class="text-muted">(Optional)</span></label>
|
||
|
<input type="text" class="form-control" id="address2" placeholder="Apartment or suite">
|
||
|
</div>
|
||
|
|
||
|
<div class="row">
|
||
|
<div class="col-md-5 mb-3">
|
||
|
<label for="country">Country</label>
|
||
|
<select class="custom-select d-block w-100" id="country" required>
|
||
|
<option value="">Choose...</option>
|
||
|
<option>United States</option>
|
||
|
</select>
|
||
|
<div class="invalid-feedback">
|
||
|
Please select a valid country.
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="col-md-4 mb-3">
|
||
|
<label for="state">State</label>
|
||
|
<select class="custom-select d-block w-100" id="state" required>
|
||
|
<option value="">Choose...</option>
|
||
|
<option>California</option>
|
||
|
</select>
|
||
|
<div class="invalid-feedback">
|
||
|
Please provide a valid state.
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="col-md-3 mb-3">
|
||
|
<label for="zip">Zip</label>
|
||
|
<input type="text" class="form-control" id="zip" placeholder="" required>
|
||
|
<div class="invalid-feedback">
|
||
|
Zip code required.
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<hr class="mb-4">
|
||
|
<div class="custom-control custom-checkbox">
|
||
|
<input type="checkbox" class="custom-control-input" id="same-address">
|
||
|
<label class="custom-control-label" for="same-address">Shipping address is the same as my billing address</label>
|
||
|
</div>
|
||
|
<div class="custom-control custom-checkbox">
|
||
|
<input type="checkbox" class="custom-control-input" id="save-info">
|
||
|
<label class="custom-control-label" for="save-info">Save this information for next time</label>
|
||
|
</div>
|
||
|
<hr class="mb-4">
|
||
|
|
||
|
<h4 class="mb-3">Payment</h4>
|
||
|
|
||
|
<div class="d-block my-3">
|
||
|
<div class="custom-control custom-radio">
|
||
|
<input id="credit" name="paymentMethod" type="radio" class="custom-control-input" checked required>
|
||
|
<label class="custom-control-label" for="credit">Credit card</label>
|
||
|
</div>
|
||
|
<div class="custom-control custom-radio">
|
||
|
<input id="debit" name="paymentMethod" type="radio" class="custom-control-input" required>
|
||
|
<label class="custom-control-label" for="debit">Debit card</label>
|
||
|
</div>
|
||
|
<div class="custom-control custom-radio">
|
||
|
<input id="paypal" name="paymentMethod" type="radio" class="custom-control-input" required>
|
||
|
<label class="custom-control-label" for="paypal">PayPal</label>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="row">
|
||
|
<div class="col-md-6 mb-3">
|
||
|
<label for="cc-name">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>
|
||
|
</div>
|
||
|
<div class="col-md-6 mb-3">
|
||
|
<label for="cc-number">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>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="row">
|
||
|
<div class="col-md-3 mb-3">
|
||
|
<label for="cc-expiration">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 mb-3">
|
||
|
<label for="cc-cvv">CVV</label>
|
||
|
<input type="text" class="form-control" id="cc-cvv" placeholder="" required>
|
||
|
<div class="invalid-feedback">
|
||
|
Security code required
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<hr class="mb-4">
|
||
|
<button class="btn btn-primary btn-lg btn-block" type="submit">Continue to checkout</button>
|
||
|
</form>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<footer class="my-5 pt-5 text-muted text-center text-small">
|
||
|
<p class="mb-1">© 2017-2018 Company Name</p>
|
||
|
<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>
|
||
|
|
||
|
<!-- Bootstrap core JavaScript
|
||
|
================================================== -->
|
||
|
<!-- Placed at the end of the document so the pages load faster -->
|
||
|
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||
|
<script>window.jQuery || document.write('<script src="../../../../assets/js/vendor/jquery-slim.min.js"><\/script>')</script>
|
||
|
<script src="../../../../assets/js/vendor/popper.min.js"></script>
|
||
|
<script src="../../../../dist/js/bootstrap.min.js"></script>
|
||
|
<script src="../../../../assets/js/vendor/holder.min.js"></script>
|
||
|
<script>
|
||
|
// Example starter JavaScript for disabling form submissions if there are invalid fields
|
||
|
(function() {
|
||
|
'use strict';
|
||
|
|
||
|
window.addEventListener('load', function() {
|
||
|
// Fetch all the forms we want to apply custom Bootstrap validation styles to
|
||
|
var forms = document.getElementsByClassName('needs-validation');
|
||
|
|
||
|
// Loop over them and prevent submission
|
||
|
var validation = Array.prototype.filter.call(forms, function(form) {
|
||
|
form.addEventListener('submit', function(event) {
|
||
|
if (form.checkValidity() === false) {
|
||
|
event.preventDefault();
|
||
|
event.stopPropagation();
|
||
|
}
|
||
|
form.classList.add('was-validated');
|
||
|
}, false);
|
||
|
});
|
||
|
}, false);
|
||
|
})();
|
||
|
</script>
|
||
|
</body>
|
||
|
</html>
|