Buy a ticket
What does it do?
- Helps users to enter the ticket purchase journey straight from the homepage
When to use it?
- On the homepage
How it works?
- This pattern directs users to the ticket finder service, where they can continue with purchasing a relevant ticket based on the ticket options they have selected
HTML markup
<form class="wmnds-buy-a-ticket">
<h2 class="wmnds-buy-a-ticket__title">Buy a ticket</h2>
<div class="wmnds-m-b-md wmnds-p-b-xsm">
<fieldset class="wmnds-buy-a-ticket__mode-checkboxes">
<legend class="wmnds-buy-a-ticket__label">Which modes of transport will you use?</legend>
<div class="wmnds-grid wmnds-grid--spacing-3-sm wmnds-grid--spacing-sm-3-md">
<label class="wmnds-col-1-3">
<input type="checkbox" class="wmnds-buy-a-ticket__mode-checkbox wmnds-screenreaders-only" name="useBus" value="allowBus">
<div class="wmnds-btn wmnds-btn--mode wmnds-btn--block">
<svg class="wmnds-btn__icon ">
<use xlink:href="#wmnds-modes-isolated-bus" href="#wmnds-modes-isolated-bus"></use>
</svg>
Bus
</div>
</label>
<label class="wmnds-col-1-3">
<input type="checkbox" class="wmnds-buy-a-ticket__mode-checkbox wmnds-screenreaders-only" name="useTrain" value="allowTrain">
<div class="wmnds-btn wmnds-btn--mode wmnds-btn--block">
<svg class="wmnds-btn__icon ">
<use xlink:href="#wmnds-modes-isolated-rail" href="#wmnds-modes-isolated-rail"></use>
</svg>
Train
</div>
</label>
<label class="wmnds-col-1-3">
<input type="checkbox" class="wmnds-buy-a-ticket__mode-checkbox wmnds-screenreaders-only" name="useTram" value="allowMetro">
<div class="wmnds-btn wmnds-btn--mode wmnds-btn--block">
<svg class="wmnds-btn__icon ">
<use xlink:href="#wmnds-modes-isolated-metro" href="#wmnds-modes-isolated-metro"></use>
</svg>
Tram
</div>
</label>
</div>
</fieldset>
</div>
<div class="wmnds-fe-group wmnds-m-b-md wmnds-p-b-xsm ">
<div class="wmnds-fe-dropdown">
<label class="wmnds-fe-label wmnds-buy-a-ticket__label" for="buyATicketPassengerType">Who will be travelling?</label>
<select class="wmnds-fe-dropdown__select wmnds-fe-dropdown__select--secondary" id="buyATicketPassengerType" name="passengerType">
<option value="" selected="true" disabled="true">
Select traveller
</option>
<option value="Adult">
Adult
</option>
<option value="Child">
Child
</option>
<option value="Student">
Student
</option>
<option value="Family">
Group / Family
</option>
<option value="Concessionary">
Concession
</option>
</select>
</div>
</div>
<div class="wmnds-fe-group wmnds-m-b-md wmnds-p-b-xsm ">
<div class="wmnds-fe-dropdown">
<label class="wmnds-fe-label wmnds-buy-a-ticket__label" for="buyATicketDuration">How long will the ticket last for?</label>
<select class="wmnds-fe-dropdown__select wmnds-fe-dropdown__select--secondary" id="buyATicketDuration" name="timeBand">
<option value="" selected="true" disabled="true">
Select ticket length
</option>
<option value="Pay on day / 1 day">
A day
</option>
<option value="Less than a month">
Less than a month
</option>
<option value="About a month">
About a month
</option>
<option value="Longer than a month">
Longer than a month
</option>
</select>
</div>
</div>
<button class="wmnds-btn wmnds-col-1 wmnds-col-sm-1-2 wmnds-btn--align-left" type="submit">
Find tickets
<svg class="wmnds-btn__icon wmnds-btn__icon--right ">
<use xlink:href="#wmnds-general-chevron-right" href="#wmnds-general-chevron-right"></use>
</svg>
</button>
</form>
Nunjucks markup
{% from "wmnds/patterns/buy-a-ticket/_buy-a-ticket.njk" import wmndsBuyATicket %}
{{
wmndsBuyATicket()
}}
Recommended javascript (browser compatible)
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var buyATicketJS = function buyATicketJS() {
var onSubmitForm = function onSubmitForm(e) {
e.preventDefault();
var data = new FormData(e.target);
var queryString = new URLSearchParams(data).toString();
queryString = queryString.replace('useBus=', '');
queryString = queryString.replace('useTrain=', '');
queryString = queryString.replace('useTram=', '');
window.location.href = "https://legacy.wmnetwork.co.uk/tickets/#/?".concat(queryString);
};
var buyATicketComponents = document.querySelectorAll('.wmnds-buy-a-ticket');
buyATicketComponents.forEach(function(buyATicketComponent) {
buyATicketComponent.addEventListener('submit', onSubmitForm);
});
};
var _default = buyATicketJS;
exports["default"] = _default;
Recommended javascript (ES6)
const buyATicketJS = () => {
const onSubmitForm = e => {
e.preventDefault();
const data = new FormData(e.target);
let queryString = new URLSearchParams(data).toString();
queryString = queryString.replace('useBus=', '');
queryString = queryString.replace('useTrain=', '');
queryString = queryString.replace('useTram=', '');
window.location.href = `https://legacy.wmnetwork.co.uk/tickets/#/?${queryString}`;
};
const buyATicketComponents = document.querySelectorAll('.wmnds-buy-a-ticket');
buyATicketComponents.forEach(buyATicketComponent => {
buyATicketComponent.addEventListener('submit', onSubmitForm);
});
};
export default buyATicketJS;