www.britishairways.com
Open in
urlscan Pro
23.201.252.217
Public Scan
Submitted URL: http://britishairways.com/
Effective URL: https://www.britishairways.com/travel/home/public/en_gb
Submission: On August 17 via manual from GB — Scanned from GB
Effective URL: https://www.britishairways.com/travel/home/public/en_gb
Submission: On August 17 via manual from GB — Scanned from GB
Form analysis
11 forms found in the DOMName: searchForm —
<form data-ng-submit="submitSearch()" name="searchForm" class="search-form ng-pristine ng-valid" data-ng-class="{'hasValue': hasSearchValue}"><input tabindex="0" id="search-input" class="header-search-input ng-pristine ng-untouched ng-valid ng-empty"
data-ng-class="{'hasValue': hasSearchValue}" data-ng-model="searchValue" data-ng-focus="focusEvent($event, 'searchSelect')" data-ng-keyup="escape($event)" style=""> <button tabindex="0" type="submit" class="search site-search-submit"
data-ng-class="{'hasValue': hasSearchValue}" aria-label="Submit"><img data-ng-src="/cms/global/assets/images/site/icon/header_search.svg" alt="Search" src="/cms/global/assets/images/site/icon/header_search.svg"></button></form>
Name: dualForm-3 — POST https://www.britishairways.com/travel/managebooking/public/en_gb
<form method="post" action="https://www.britishairways.com/travel/managebooking/public/en_gb" id="dualForm-3" class="sub-nav-form ng-pristine ng-valid ng-valid-maxlength" name="dualForm-3">
<fieldset>
<legend class="acc-reader ng-binding">My booking</legend><input name="eId" type="hidden" id="dualFormEID" autocomplete="off">
<div ba-text-input="" data-field-title="'header-beta-olci-booking-ref'" data-value="global.bookingRef" data-clear="false" class="ng-isolate-scope">
<div class="field"><label data-ng-class="{'focusedLabel': labelMove}" for="dualFormbookingRef" class="ng-binding">Booking reference</label>
<div data-ng-transclude="" data-ng-keydown="checkClear('focus', event)"><input tabindex="0" spellcheck="false" autocomplete="off" size="29" maxlength="6" type="text" name="bookingRef" id="dualFormbookingRef" data-ng-model="global.bookingRef"
data-nd-bind="global.bookingRef" class="ng-pristine ng-untouched ng-valid ng-scope ng-empty ng-valid-maxlength"></div><button class="clear-button hidden" data-ng-class="{'hidden': !showClear}" aria-label="clear field"
type="button"></button>
</div>
</div>
<div ba-text-input="" data-field-title="'header-beta-olci-lastname'" data-value="global.lastname" data-clear="false" class="ng-isolate-scope">
<div class="field"><label data-ng-class="{'focusedLabel': labelMove}" for="dualFormlastname" class="ng-binding">Last name of passenger</label>
<div data-ng-transclude="" data-ng-keydown="checkClear('focus', event)"><input tabindex="0" spellcheck="false" autocomplete="off" size="29" maxlength="59" type="text" name="lastname" id="dualFormlastname" data-ng-model="global.lastname"
data-ng-bind="global.lastname" class="ng-pristine ng-untouched ng-valid ng-binding ng-scope ng-empty ng-valid-maxlength"></div><button class="clear-button hidden" data-ng-class="{'hidden': !showClear}" aria-label="clear field"
type="button"></button>
</div>
</div>
<div class="row dual-form-button-row"><button tabindex="0" class="button btn-primary dual-form-button-mmb ng-binding ng-isolate-scope" type="submit" data-ba-resource-bundle-static="" data-key="header-beta-find-mmb"
data-ng-click="updateFormParams('mmb', $event)">Find my booking</button> <button tabindex="0" class="button btn-primary dual-form-button-olci ng-binding ng-isolate-scope" type="submit" data-ba-resource-bundle-static=""
data-key="header-beta-check-in" data-ng-click="updateFormParams('olci', $event)">Online check-in</button></div>
</fieldset>
</form>
Name: searchForm —
<form name="searchForm" novalidate="novalidate" class="ng-pristine ng-invalid ng-invalid-required">
<div aria-labelledby="flightTab" id="flightPanel" role="tabpanel" class="search-form"><!-- ngIf: !flightOnly -->
<div class="row ng-scope" data-ng-if="!flightOnly">
<div class="small-12 medium-12 columns search-type">
<div class="row">
<div class="small-12 columns"><!-- ngIf: userChoice === 'Flight' && isNotStaffCug && (showFlightHotelUpsell || showFlightCarUpsell) --></div>
</div>
<div class="row"><!-- ngIf: cugName -->
<div class="small-12 medium-8 large-6 columns padding-zero-for-small float-left">
<p class="selected ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-flights" aria-hidden="true">Flights</p>
<p data-adobe-add-tracking-to-child-href="">
<a class="multicity-link ng-binding ng-isolate-scope" data-ng-click="SP.redirectToMultiCity('click')" data-ng-keydown="SP.redirectToMultiCity($event)" data-ba-resource-bundle-static="" data-key="Searchbar-multiCity" tabindex="0">Multi City & Round the World</a>
</p>
<p data-ba-resource-bundle-static="" data-key="Searchbar-concur" data-ng-show="concur" data-ng-click="SP.setUserChoice('Concur', 'click')" tabindex="0" data-ng-keydown="SP.setUserChoice('Concur',$event)"
data-ng-class="{'selected' : (userChoice === 'Concur')}" class="ng-binding ng-isolate-scope ng-hide">Corporate booking</p>
</div>
<div class="small-12 medium-4 large-6 columns padding-zero-for-small"><span class="flexible-search show-for-medium-up float-right">
<div class="title ng-binding">Need Inspiration?</div><a class="link ng-binding" data-ng-click="SP.redirectToFlexibleSearch()" tabindex="0">Explore all our flight destinations <span data-icon=""></span></a>
</span> <span class="concur-heading ng-hide" data-ng-show="userChoice === 'Concur'"><span data-ba-resource-bundle-static="" data-key="Searchbar-sync" class="ng-binding ng-isolate-scope">Connected to</span> <img
data-ng-src="images/SAP_Concur_Logo.png" alt="concur Logo" src="/apps/ba-home/images/SAP_Concur_Logo.png"></span> <!-- ngIf: userChoice === 'Flight' && isNotStaffCug && (showFlightHotelUpsell || showFlightCarUpsell) --></div>
</div>
</div>
</div><!-- end ngIf: !flightOnly --><!-- ngIf: flightOnly -->
<div class="row">
<div class="small-12 large-12 columns search-section">
<div class="row">
<div class="large-4 columns">
<div class="row">
<div class="small-12 columns from-to-field"><!-- ngIf: userChoice === 'Flight' || userChoice === 'Concur' -->
<div data-ng-if="userChoice === 'Flight' || userChoice === 'Concur'" data-typeahead="" data-input-value="" data-label-key="typeahead-from" data-value-field="locationValue" data-class-name="from inverted "
data-error-message="errorMessage.origin" data-get-suggestions="SP.updateOriginSuggestions(value, next)" data-suggestion-selected="SP.updateOrigin(selection)" data-flight-not-available-error="errorMessage.flightNotAvailable"
data-user-choice="SP.userChoice" data-field-name="from" data-aria-label-key="typeahead-searchBarFromFieldAriaLabel" data-availability-error="errorMessage.showInvalidWarning" data-tab-index="0"
class="search-field first-search-field ng-scope ng-isolate-scope">
<div data-click-and-touch-off="" data-click-and-touch-off-callback="loseFocus()" data-click-and-touch-off-if="!hideSuggestion" class="typeahead-field" id="typeahead-from"
data-ng-class="{'did-you-mean-error' : (errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed)}"><input type="text" name="searchEntry" data-ng-model="inputValue"
data-ng-change="updateSuggestions(inputValue, '')" data-ng-keydown="navigate($event, activeIndex)" data-ng-required="true" autocomplete="off" id="from" tabindex="0" role="textbox" class="from inverted "
data-ng-disabled="eligibilityErrorState" aria-label="From, search bar Departure field" aria-live="polite" data-select-content-on-focus=""
data-ng-class="{'invalid-field' : (errorMessage || availabilityError), 'invalid-field flight-error' : (flightNotAvailableError === 'FlightNotAvailable')}" required="required"> <label for="from" aria-hidden="true"
class="ng-binding">From <span data-ba-resource-bundle-static="" data-key="locationPlaceHolder" class="ng-binding ng-isolate-scope">type 3 letters</span></label> <!-- ngIf: showSuggestions() -->
<div class="search-bar-dropdown ng-hide" data-ng-show="errorMessage || showSuggestions()" data-ng-class="{'invalid-warning': errorMessage}">
<!-- ngIf: errorMessage || isServiceFailed --><!-- ngIf: errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed -->
<!-- ngIf: errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed -->
<ul data-ng-show="showSuggestions()" class="resultsContainer choicesContainer ng-hide" tabindex="-1" role="listbox"><!-- ngRepeat: suggestion in suggestions track by $index --></ul>
</div>
</div>
</div><!-- end ngIf: userChoice === 'Flight' || userChoice === 'Concur' -->
</div>
</div>
<div class="row">
<div class="small-12 columns from-to-field"><!-- ngIf: userChoice === 'Flight' || userChoice==='Concur' -->
<div data-ng-if="userChoice === 'Flight' || userChoice==='Concur'" data-typeahead="" data-input-value="" data-label-key="typeahead-to" data-value-field="locationValue" data-class-name="to inverted "
data-error-message="errorMessage.destination" data-get-suggestions="SP.updateDestinationSuggestions(value, next)" data-suggestion-selected="SP.updateDestination(selection)"
data-flight-not-available-error="errorMessage.flightNotAvailable" data-user-choice="userChoice" data-field-name="to" data-aria-label-key="typeahead-searchBarToFieldAriaLabel" data-availability-error="errorMessage.showInvalidWarning"
data-tab-index="0" class="search-field ng-scope ng-isolate-scope">
<div data-click-and-touch-off="" data-click-and-touch-off-callback="loseFocus()" data-click-and-touch-off-if="!hideSuggestion" class="typeahead-field" id="typeahead-to"
data-ng-class="{'did-you-mean-error' : (errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed)}"><input type="text" name="searchEntry" data-ng-model="inputValue"
data-ng-change="updateSuggestions(inputValue, '')" data-ng-keydown="navigate($event, activeIndex)" data-ng-required="true" autocomplete="off" id="to" tabindex="0" role="textbox" class="to inverted "
data-ng-disabled="eligibilityErrorState" aria-label="To, search bar Destination field" aria-live="polite" data-select-content-on-focus=""
data-ng-class="{'invalid-field' : (errorMessage || availabilityError), 'invalid-field flight-error' : (flightNotAvailableError === 'FlightNotAvailable')}" required="required"> <label for="to" aria-hidden="true"
class="ng-binding">To <span data-ba-resource-bundle-static="" data-key="locationPlaceHolder" class="ng-binding ng-isolate-scope">type 3 letters</span></label> <!-- ngIf: showSuggestions() -->
<div class="search-bar-dropdown ng-hide" data-ng-show="errorMessage || showSuggestions()" data-ng-class="{'invalid-warning': errorMessage}">
<!-- ngIf: errorMessage || isServiceFailed --><!-- ngIf: errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed -->
<!-- ngIf: errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed -->
<ul data-ng-show="showSuggestions()" class="resultsContainer choicesContainer ng-hide" tabindex="-1" role="listbox"><!-- ngRepeat: suggestion in suggestions track by $index --></ul>
</div>
</div>
</div><!-- end ngIf: userChoice === 'Flight' || userChoice==='Concur' -->
</div>
</div><!-- ngIf: errorMessage.flightNotAvailable --><!-- ngIf: errorMessage.availabilityError --><!-- ngIf: errorMessage.unexpectedError -->
</div>
<div class="small-6 large-2 columns date-container outbound">
<div class="outbound date-selection" tabindex="0" id="flight-outbound-date-selector" data-ng-click="openDatepicker(false)" data-ng-keydown="openDatepicker(false, $event)" aria-label="Outbound date selector, 17 August" role="button">
<div class="journey-type bold ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-outbound" aria-hidden="true">Outbound</div>
<div class="date h1 ng-binding" aria-hidden="true">17</div>
<p class="month ng-binding" aria-hidden="true">August</p>
</div>
</div>
<div class="small-6 large-2 columns date-container"><!-- ngIf: journeyDates.length > 1 -->
<div class="date-selection" tabindex="0" data-ng-click="openDatepicker(true)" data-ng-keydown="openDatepicker(true, $event)" id="flight-inbound-date-selector" aria-label="Return date selector, Add return" role="button">
<!-- ngIf: journeyDates.length <= 1 -->
<div class="journey-type bold ng-binding ng-scope ng-isolate-scope" data-ng-if="journeyDates.length <= 1" data-ba-resource-bundle-static="" data-key="Searchbar-addReturn" aria-hidden="true">Add a return</div>
<!-- end ngIf: journeyDates.length <= 1 --><!-- ngIf: journeyDates.length > 1 --><!-- ngIf: journeyDates.length <= 1 -->
<div data-ng-if="journeyDates.length <= 1" class="date add-date h1 ng-scope" aria-hidden="true"><span aria-hidden="true" data-icon=""></span></div><!-- end ngIf: journeyDates.length <= 1 --><!-- ngIf: journeyDates.length > 1 -->
</div>
</div>
<div class="large-2 columns drop-down-container">
<div class="row">
<div class="small-12 medium-6 large-12 columns drop-down-container" data-ng-hide="(userChoice === 'Concur' || isConcur)">
<div id="sb-Flight-pax-mix" class="drop-down-selection" tabindex="0" data-ng-click="togglePaxMixPicker()" data-ng-keypress="keyPress($event, togglePaxMixPicker)" title="1 Adult" aria-label="Passenger selector, 1 Adult" role="button">
<img data-ng-src="images/avatar_standard.svg" aria-hidden="true" alt="" src="/apps/ba-home/images/avatar_standard.svg"> <span class="label-font-style ng-binding ng-isolate-scope" data-ba-resource-bundle-static=""
data-key="Searchbar-passengers" aria-hidden="true">Passengers</span> <span class="selection input-text-styling ng-binding" aria-hidden="true">1 Adult</span></div>
</div><!-- ngIf: (userChoice === 'Concur' || isConcur) -->
<div class="small-12 medium-6 large-12 columns drop-down-container">
<div id="sb-flight-travel-class" class="drop-down-selection" tabindex="0" data-ng-click="toggleTravelClassPicker()" data-ng-keypress="keyPress($event, toggleTravelClassPicker)" title="Economy"
aria-label="Travel class selector, Economy" role="button"><span class="travel-class-icon" aria-hidden="true" data-icon=""></span> <span class="label-font-style ng-binding ng-isolate-scope" data-ba-resource-bundle-static=""
data-key="Searchbar-travelClass" aria-hidden="true">Travel class</span> <span class="selection input-text-styling ng-binding" aria-hidden="true">Economy</span></div>
</div>
</div>
<div class="row"><!-- ngIf: (userChoice === 'Concur') --></div>
</div>
<!-- ngIf: (showFlightHotelUpsell || showFlightCarUpsell) && userSelection.selectedCabin === SP.SearchBarConstants.DEFAULT_CABIN_CLASS --><!-- ngIf: showFlightOnlyUpsell && (userSelection.selectedCabin === SP.SearchBarConstants.DEFAULT_CABIN_CLASS) --><!-- ngIf: !(showFlightOnlyUpsell) -->
<div class="large-2 small-12 columns search-button-container ng-scope" data-ng-if="!(showFlightOnlyUpsell)"><button type="button" data-ng-click="SP.submitSearchForm()" aria-disabled="true" class="primary search-button disabled" tabindex="0"
data-ng-class="{'disabled' : !SP.isSearchEnabled()}" data-icon=""><span class="hide-for-large-up ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-searchButtonAriaLabel">Search</span></button>
<!-- ngIf: isHotlineInformationRetrieved --> <button class="hide-for-medium-up close-button ng-binding ng-isolate-scope" data-ng-click="expandSearchBar()" data-ba-resource-bundle-static="" data-key="Searchbar-closeSearch"
tabindex="0">Close</button></div><!-- end ngIf: !(showFlightOnlyUpsell) -->
</div><!-- ngIf: SP.isFlexiEnabled() -->
<div class="row ng-scope" data-ng-if="SP.isFlexiEnabled()">
<div class="small-12 hide-for-medium-up"><span class="flexible-search">
<div class="title ng-binding">Need Inspiration?</div><a class="link ng-binding" data-ng-click="SP.redirectToFlexibleSearch()" tabindex="0">Explore all our flight destinations <span data-icon=""></span></a>
</span></div>
</div><!-- end ngIf: SP.isFlexiEnabled() -->
<div class="row show-for-large-up"><!-- ngIf: errorMessage.availabilityError --><!-- ngIf: errorMessage.unexpectedError --></div><!-- ngIf: isHotlineInformationRetrieved -->
</div>
</div>
</div>
</form>
<form class="ng-pristine ng-valid">
<div data-pop-up-directive="" data-show="isPaxMixPickerOpen" data-restrict-exit-functionality="true" role="dialog" data-selector-id="'sb-'+userChoice+'-pax-mix'" data-pop-up-id="'sb-'+userChoice+'-pax-mix-pop-up'"
data-position-adjustment-values="popUpAdjustmentValues" data-disable-position-adjustment="disablePositionAdjustment" data-pop-up-height="430" data-pop-up-width="400" data-ng-keydown="escapePopUp($event, 'pax')" aria-labelledby="pax-mix-header"
aria-modal="false" aria-hidden="true" aria-live="assertive" class="ng-isolate-scope">
<div class="pop-up ng-hide" data-ng-show="show" data-ng-keydown="keyPress($event)" tabindex="-1">
<div class="pop-up-overlay" data-ng-click="hidePopUp()"></div>
<div data-trap-focus="" data-focus-first-element="show" data-override-auto-focus="true" id="sb-Flight-pax-mix-pop-up" data-ng-show="show" class="pop-up-dialog ng-isolate-scope pop-up-animation ng-hide" data-ng-style="applyDialogPosition()"
ng-class="{'pop-up-animation' : (disablePositionAdjustment !== true)}" data-ng-transclude="" style="top: 0px; left: 0px;">
<div id="pax-mix-header" class="pop-up-dialog-heading bold ng-binding ng-scope ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-paxMixPickerHeading">Who are you travelling with?</div>
<div class="pop-up-dialog-content ng-scope ng-isolate-scope" data-passenger-supermix="" id="passenger-mix" data-supermix="passengers.mix" data-rule-set="passengers.rules" data-resource-callback="getResourcesForPassengerMix(errorKey)">
<!-- ngIf: hasRooms() --><!-- ngIf: showPassengerRefinementInfo -->
<div class="passenger-supermix" data-ng-class="{'passenger-supermix-multi-passenger': hasRooms()}"><!-- ngRepeat: passengerMix in supermix.group track by $index -->
<div class="passenger-mix ng-pristine ng-valid ng-scope" data-ng-repeat="passengerMix in supermix.group track by $index" data-ng-form="" data-name="supermixForm">
<div class="passenger-mix-information ng-hide" data-ng-show="hasRooms()">
<div class="passenger-mix-header"><span class="passenger-mix-title bold ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="pax-room" data-supplant="{'S1':$index + 1}">Room 1</span></div>
<div class="passenger-mix-header">
<p data-ng-class="{'passenger-mix-summary-hide': !shouldShowSummary(supermixForm, passengerMix.showSummary)}" class="passenger-mix-summary ng-binding passenger-mix-summary-hide" data-ng-bind-html="getRoomSummary(passengerMix)">
1 Adult</p>
<a class="passenger-mix-edit-link small-text ng-binding ng-isolate-scope ng-hide" data-ng-click="toggleRoomDetails($index, passengerMix)" data-ng-keydown="callOnKeyDown($event, 'toggleRoomDetails', $index)" data-ng-show="shouldShowSummary(supermixForm, passengerMix.showSummary)" tabindex="0" data-ba-resource-bundle-static="" data-key="edit-link-text" role="link" aria-label="Link to edit room details 1">Edit</a>
</div>
</div>
<div class="passenger-mix-directive ng-isolate-scope" data-ng-class="{'passenger-mix-directive-hide': shouldShowSummary(supermixForm, passengerMix.showSummary)}" data-passenger-mix-two="" data-parent-index="$index"
data-passengers="passengerMix" data-submitted="submitted" data-index="$index" data-rule-set="ruleSet" data-supermix="supermix" data-resource-callback="paxResourceCallback(errorKey)"><!-- ngRepeat: passenger in passengers -->
<div data-ng-repeat="passenger in passengers" class="ba-passenger-mix ng-pristine ng-valid ng-scope" data-ng-form="" data-name="paxMixForm" data-click-and-touch-off="" data-click-and-touch-off-if="passenger.errors.length > 0"
data-click-and-touch-off-callback="clearPassengerErrors()">
<div class="passenger-submix">
<div class="row spinner ng-pristine ng-untouched ng-valid ng-isolate-scope ng-not-empty" id="AdultKey0" data-spinner="" data-label="passenger.displayKeyPlural" data-sub-label="passenger.ageRange" data-parent-index="$index"
data-value="passenger.value" data-override="spinnerCallback(newVal, index, optionalOverride)" data-ng-model="passenger.value" data-get-aria-label="ariaLabel($index)">
<div class="columns small-2 right-padding-zero"><span class="h1 spinner-value ng-binding" data-ng-class="{'spinner-value-zero': value===0}" tabindex="-1" aria-live="assertive" aria-label="number of Adults is now 1">1</span>
</div><!-- ngIf: label || subLabel -->
<div class="columns small-5 left-padding-zero ng-scope" data-ng-if="label || subLabel"><!-- ngIf: label -->
<div class="p bold spinner-main-label ng-binding ng-scope" data-ng-if="label">Adults</div><!-- end ngIf: label --><!-- ngIf: subLabel -->
<div class="small-text spinner-sub-label ng-binding ng-scope" data-ng-if="subLabel">16+ years</div><!-- end ngIf: subLabel -->
</div><!-- end ngIf: label || subLabel -->
<div class="columns small-5">
<div class="spinner-button-container"><button type="button" class="spinner-button decrease disable" data-ng-class="{'disable': isMinusDisabled}" data-type="decrease" data-ng-click="minus()" data-ng-attr-tabindex="{{minusTab}}"
aria-label="decrease number of Adults" aria-description="16+ years" data-icon="" tabindex="-1"></button> <button type="button" class="spinner-button increase" data-ng-class="{'disable': isPlusDisabled}"
data-type="increase" data-ng-click="plus()" data-ng-attr-tabindex="{{plusTab}}" aria-label="increase number of Adults" aria-description="16+ years" data-icon="" tabindex="0"></button></div>
</div>
</div><!-- ngIf: requiresAgeList(passenger) -->
<div class="error-messages ng-isolate-scope ng-hide" data-ba-page-messages="" role="alert" data-ng-show="passenger.errors.length > 0" data-message-type-class="'information'"
data-message-description="getResource(passenger.errors[0]).resourceKey | baResourceBundleDynamic: getResource(passenger.errors[0]).supplants" data-inverted="true"><!-- ngIf: pageDisabled === true -->
<div class="page-messages information inverted" data-ng-class="{'page-message-disabled': pageDisabled, 'inverted': inverted === 'true'}">
<!-- ngIf: messageTitle --><!-- ngIf: messageTitleLiteral --><!-- ngIf: messageDescription -->
<p ng-bind-html="messageDescription" data-ng-if="messageDescription" class="ng-binding ng-scope">Resource Not Found!</p><!-- end ngIf: messageDescription -->
<div data-ng-transclude=""></div>
</div>
</div>
</div>
</div><!-- end ngRepeat: passenger in passengers -->
<div data-ng-repeat="passenger in passengers" class="ba-passenger-mix ng-pristine ng-valid ng-scope" data-ng-form="" data-name="paxMixForm" data-click-and-touch-off="" data-click-and-touch-off-if="passenger.errors.length > 0"
data-click-and-touch-off-callback="clearPassengerErrors()">
<div class="passenger-submix">
<div class="row spinner ng-pristine ng-untouched ng-valid ng-isolate-scope ng-not-empty" id="YoungAdultKey0" data-spinner="" data-label="passenger.displayKeyPlural" data-sub-label="passenger.ageRange" data-parent-index="$index"
data-value="passenger.value" data-override="spinnerCallback(newVal, index, optionalOverride)" data-ng-model="passenger.value" data-get-aria-label="ariaLabel($index)">
<div class="columns small-2 right-padding-zero"><span class="h1 spinner-value ng-binding spinner-value-zero" data-ng-class="{'spinner-value-zero': value===0}" tabindex="-1" aria-live="assertive"
aria-label="number of Young adults is now 0">0</span></div><!-- ngIf: label || subLabel -->
<div class="columns small-5 left-padding-zero ng-scope" data-ng-if="label || subLabel"><!-- ngIf: label -->
<div class="p bold spinner-main-label ng-binding ng-scope" data-ng-if="label">Young adults</div><!-- end ngIf: label --><!-- ngIf: subLabel -->
<div class="small-text spinner-sub-label ng-binding ng-scope" data-ng-if="subLabel">12 - 15 years</div><!-- end ngIf: subLabel -->
</div><!-- end ngIf: label || subLabel -->
<div class="columns small-5">
<div class="spinner-button-container"><button type="button" class="spinner-button decrease disable" data-ng-class="{'disable': isMinusDisabled}" data-type="decrease" data-ng-click="minus()" data-ng-attr-tabindex="{{minusTab}}"
aria-label="decrease number of Young adults" aria-description="12 - 15 years" data-icon="" tabindex="-1"></button> <button type="button" class="spinner-button increase" data-ng-class="{'disable': isPlusDisabled}"
data-type="increase" data-ng-click="plus()" data-ng-attr-tabindex="{{plusTab}}" aria-label="increase number of Young adults" aria-description="12 - 15 years" data-icon="" tabindex="0"></button></div>
</div>
</div><!-- ngIf: requiresAgeList(passenger) -->
<div class="error-messages ng-isolate-scope ng-hide" data-ba-page-messages="" role="alert" data-ng-show="passenger.errors.length > 0" data-message-type-class="'information'"
data-message-description="getResource(passenger.errors[0]).resourceKey | baResourceBundleDynamic: getResource(passenger.errors[0]).supplants" data-inverted="true"><!-- ngIf: pageDisabled === true -->
<div class="page-messages information inverted" data-ng-class="{'page-message-disabled': pageDisabled, 'inverted': inverted === 'true'}">
<!-- ngIf: messageTitle --><!-- ngIf: messageTitleLiteral --><!-- ngIf: messageDescription -->
<p ng-bind-html="messageDescription" data-ng-if="messageDescription" class="ng-binding ng-scope">Resource Not Found!</p><!-- end ngIf: messageDescription -->
<div data-ng-transclude=""></div>
</div>
</div>
</div>
</div><!-- end ngRepeat: passenger in passengers -->
<div data-ng-repeat="passenger in passengers" class="ba-passenger-mix ng-pristine ng-valid ng-scope" data-ng-form="" data-name="paxMixForm" data-click-and-touch-off="" data-click-and-touch-off-if="passenger.errors.length > 0"
data-click-and-touch-off-callback="clearPassengerErrors()">
<div class="passenger-submix">
<div class="row spinner ng-pristine ng-untouched ng-valid ng-isolate-scope ng-not-empty" id="ChildKey0" data-spinner="" data-label="passenger.displayKeyPlural" data-sub-label="passenger.ageRange" data-parent-index="$index"
data-value="passenger.value" data-override="spinnerCallback(newVal, index, optionalOverride)" data-ng-model="passenger.value" data-get-aria-label="ariaLabel($index)">
<div class="columns small-2 right-padding-zero"><span class="h1 spinner-value ng-binding spinner-value-zero" data-ng-class="{'spinner-value-zero': value===0}" tabindex="-1" aria-live="assertive"
aria-label="number of Children is now 0">0</span></div><!-- ngIf: label || subLabel -->
<div class="columns small-5 left-padding-zero ng-scope" data-ng-if="label || subLabel"><!-- ngIf: label -->
<div class="p bold spinner-main-label ng-binding ng-scope" data-ng-if="label">Children</div><!-- end ngIf: label --><!-- ngIf: subLabel -->
<div class="small-text spinner-sub-label ng-binding ng-scope" data-ng-if="subLabel">2 - 11 years</div><!-- end ngIf: subLabel -->
</div><!-- end ngIf: label || subLabel -->
<div class="columns small-5">
<div class="spinner-button-container"><button type="button" class="spinner-button decrease disable" data-ng-class="{'disable': isMinusDisabled}" data-type="decrease" data-ng-click="minus()" data-ng-attr-tabindex="{{minusTab}}"
aria-label="decrease number of Children" aria-description="2 - 11 years" data-icon="" tabindex="-1"></button> <button type="button" class="spinner-button increase" data-ng-class="{'disable': isPlusDisabled}"
data-type="increase" data-ng-click="plus()" data-ng-attr-tabindex="{{plusTab}}" aria-label="increase number of Children" aria-description="2 - 11 years" data-icon="" tabindex="0"></button></div>
</div>
</div><!-- ngIf: requiresAgeList(passenger) -->
<div class="error-messages ng-isolate-scope ng-hide" data-ba-page-messages="" role="alert" data-ng-show="passenger.errors.length > 0" data-message-type-class="'information'"
data-message-description="getResource(passenger.errors[0]).resourceKey | baResourceBundleDynamic: getResource(passenger.errors[0]).supplants" data-inverted="true"><!-- ngIf: pageDisabled === true -->
<div class="page-messages information inverted" data-ng-class="{'page-message-disabled': pageDisabled, 'inverted': inverted === 'true'}">
<!-- ngIf: messageTitle --><!-- ngIf: messageTitleLiteral --><!-- ngIf: messageDescription -->
<p ng-bind-html="messageDescription" data-ng-if="messageDescription" class="ng-binding ng-scope">Resource Not Found!</p><!-- end ngIf: messageDescription -->
<div data-ng-transclude=""></div>
</div>
</div>
</div>
</div><!-- end ngRepeat: passenger in passengers -->
<div data-ng-repeat="passenger in passengers" class="ba-passenger-mix ng-pristine ng-valid ng-scope" data-ng-form="" data-name="paxMixForm" data-click-and-touch-off="" data-click-and-touch-off-if="passenger.errors.length > 0"
data-click-and-touch-off-callback="clearPassengerErrors()">
<div class="passenger-submix">
<div class="row spinner ng-pristine ng-untouched ng-valid ng-isolate-scope ng-not-empty" id="InfantKey0" data-spinner="" data-label="passenger.displayKeyPlural" data-sub-label="passenger.ageRange" data-parent-index="$index"
data-value="passenger.value" data-override="spinnerCallback(newVal, index, optionalOverride)" data-ng-model="passenger.value" data-get-aria-label="ariaLabel($index)">
<div class="columns small-2 right-padding-zero"><span class="h1 spinner-value ng-binding spinner-value-zero" data-ng-class="{'spinner-value-zero': value===0}" tabindex="-1" aria-live="assertive"
aria-label="number of Infants is now 0">0</span></div><!-- ngIf: label || subLabel -->
<div class="columns small-5 left-padding-zero ng-scope" data-ng-if="label || subLabel"><!-- ngIf: label -->
<div class="p bold spinner-main-label ng-binding ng-scope" data-ng-if="label">Infants</div><!-- end ngIf: label --><!-- ngIf: subLabel -->
<div class="small-text spinner-sub-label ng-binding ng-scope" data-ng-if="subLabel">under 2 years</div><!-- end ngIf: subLabel -->
</div><!-- end ngIf: label || subLabel -->
<div class="columns small-5">
<div class="spinner-button-container"><button type="button" class="spinner-button decrease disable" data-ng-class="{'disable': isMinusDisabled}" data-type="decrease" data-ng-click="minus()" data-ng-attr-tabindex="{{minusTab}}"
aria-label="decrease number of Infants" aria-description="under 2 years" data-icon="" tabindex="-1"></button> <button type="button" class="spinner-button increase" data-ng-class="{'disable': isPlusDisabled}"
data-type="increase" data-ng-click="plus()" data-ng-attr-tabindex="{{plusTab}}" aria-label="increase number of Infants" aria-description="under 2 years" data-icon="" tabindex="0"></button></div>
</div>
</div><!-- ngIf: requiresAgeList(passenger) -->
<div class="error-messages ng-isolate-scope ng-hide" data-ba-page-messages="" role="alert" data-ng-show="passenger.errors.length > 0" data-message-type-class="'information'"
data-message-description="getResource(passenger.errors[0]).resourceKey | baResourceBundleDynamic: getResource(passenger.errors[0]).supplants" data-inverted="true"><!-- ngIf: pageDisabled === true -->
<div class="page-messages information inverted" data-ng-class="{'page-message-disabled': pageDisabled, 'inverted': inverted === 'true'}">
<!-- ngIf: messageTitle --><!-- ngIf: messageTitleLiteral --><!-- ngIf: messageDescription -->
<p ng-bind-html="messageDescription" data-ng-if="messageDescription" class="ng-binding ng-scope">Resource Not Found!</p><!-- end ngIf: messageDescription -->
<div data-ng-transclude=""></div>
</div>
</div>
</div>
</div><!-- end ngRepeat: passenger in passengers -->
</div>
</div><!-- end ngRepeat: passengerMix in supermix.group track by $index -->
</div>
</div><button class="primary pop-up-dialog-button ng-binding ng-scope ng-isolate-scope" data-ng-click="togglePaxMixPicker()" data-ba-resource-bundle-static="" data-key="Searchbar-paxMixPickerDialogButtonText">Confirm</button>
</div>
</div>
</div>
</form>
<form class="ng-pristine ng-valid">
<div data-pop-up-directive="" data-show="isTravelClassPickerOpen" data-restrict-exit-functionality="true" role="dialog" data-selector-id="getSelectorElement('travel-class')" data-pop-up-id="getSelectorElement('travel-class')-pop-up"
data-pop-up-height="430" data-pop-up-width="400" data-position-adjustment-values="popUpAdjustmentValues" data-disable-position-adjustment="disablePositionAdjustment" data-ng-keydown="escapePopUp($event, 'class')"
aria-labelledby="travel-class-header" aria-modal="false" aria-hidden="true" aria-live="assertive" class="ng-isolate-scope">
<div class="pop-up ng-hide" data-ng-show="show" data-ng-keydown="keyPress($event)" tabindex="-1">
<div class="pop-up-overlay" data-ng-click="hidePopUp()"></div>
<div data-trap-focus="" data-focus-first-element="show" data-override-auto-focus="true" id="NaN" data-ng-show="show" class="pop-up-dialog ng-isolate-scope pop-up-animation ng-hide" data-ng-style="applyDialogPosition()"
ng-class="{'pop-up-animation' : (disablePositionAdjustment !== true)}" data-ng-transclude="" style="top: 0px; left: 0px;">
<div id="travel-class-header" class="pop-up-dialog-heading bold ng-binding ng-scope ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-travelClassHeading">What is your travel class?</div>
<div class="pop-up-dialog-content ng-scope">
<div data-cabin-type="" data-selected-value="userSelection.tempCabin" data-available-results="cabinType.availableCabinTypes" data-input-name="Cabin Type" class="ng-isolate-scope">
<legend class="hidden-field-legend ng-binding">Cabin Type</legend>
<div class="row"><!-- ngRepeat: item in availableResults track by item.value -->
<div class="columns small-12 ng-scope" data-ng-repeat="item in availableResults track by item.value"><input type="radio" id="M" class="radio-selector ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
data-ng-value="item.value" name="Cabin Type" data-dynamic-name="" checked="" value="M"> <label for="M" class="radio-button bold ng-binding">Economy</label></div><!-- end ngRepeat: item in availableResults track by item.value -->
<div class="columns small-12 ng-scope" data-ng-repeat="item in availableResults track by item.value"><input type="radio" id="W" class="radio-selector ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
data-ng-value="item.value" name="Cabin Type" data-dynamic-name="" checked="" value="W"> <label for="W" class="radio-button bold ng-binding">Premium economy</label></div>
<!-- end ngRepeat: item in availableResults track by item.value -->
<div class="columns small-12 ng-scope" data-ng-repeat="item in availableResults track by item.value"><input type="radio" id="J" class="radio-selector ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
data-ng-value="item.value" name="Cabin Type" data-dynamic-name="" checked="" value="J"> <label for="J" class="radio-button bold ng-binding">Business</label></div><!-- end ngRepeat: item in availableResults track by item.value -->
<div class="columns small-12 ng-scope" data-ng-repeat="item in availableResults track by item.value"><input type="radio" id="F" class="radio-selector ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
data-ng-value="item.value" name="Cabin Type" data-dynamic-name="" checked="" value="F"> <label for="F" class="radio-button bold ng-binding">First</label></div><!-- end ngRepeat: item in availableResults track by item.value -->
</div>
</div>
<div data-ticket-type-directive="" data-selected-value="userSelection.tempTicketType" data-available-results="ticketType.availableTicketTypes" data-input-name="Ticket Type" class="ng-isolate-scope">
<form class="ng-pristine ng-valid"><!-- ngIf: isLoggedOn && availableResults.length>2 --><!-- ngIf: !isLoggedOn || availableResults.length<=2 -->
<div class="ticket-type-container row ng-scope" data-ng-if="!isLoggedOn || availableResults.length<=2">
<div class="columns small-12">
<div class="ticket-type-button-container"><label class="switch"><input id="ticketTypeSelector" type="checkbox" class="ticket-type-checkbox ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
aria-label="Flexible ticket?" data-ng-true-value="'FLEXIBLE'" data-ng-false-value="'LOWEST'" data-ng-keydown="switchCheckBox($event, 'ticketTypeSelector')"> <span class="slider round"></span></label></div>
<div>
<div class="bold ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-flexibleTicket">Flexible ticket?</div>
<div class="penalty-fee-text small ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-noPenaltyFee">Change your flight with no penalty fee</div>
</div>
</div>
</div><!-- end ngIf: !isLoggedOn || availableResults.length<=2 -->
</form>
</div>
</div><button class="primary pop-up-dialog-button ng-binding ng-scope ng-isolate-scope" data-ng-click="toggleTravelClassPicker()" data-ba-resource-bundle-static="" data-key="Searchbar-travelClassDialogButtonText">Confirm</button>
</div>
</div>
</div>
</form>
<form class="ng-pristine ng-valid"><!-- ngIf: isLoggedOn && availableResults.length>2 --><!-- ngIf: !isLoggedOn || availableResults.length<=2 -->
<div class="ticket-type-container row ng-scope" data-ng-if="!isLoggedOn || availableResults.length<=2">
<div class="columns small-12">
<div class="ticket-type-button-container"><label class="switch"><input id="ticketTypeSelector" type="checkbox" class="ticket-type-checkbox ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
aria-label="Flexible ticket?" data-ng-true-value="'FLEXIBLE'" data-ng-false-value="'LOWEST'" data-ng-keydown="switchCheckBox($event, 'ticketTypeSelector')"> <span class="slider round"></span></label></div>
<div>
<div class="bold ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-flexibleTicket">Flexible ticket?</div>
<div class="penalty-fee-text small ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-noPenaltyFee">Change your flight with no penalty fee</div>
</div>
</div>
</div><!-- end ngIf: !isLoggedOn || availableResults.length<=2 -->
</form>
Name: mmbFormTools — POST https://www.britishairways.com/travel/managebooking/public/en_gb?source=PHP-Find-Booking
<form method="post" action="https://www.britishairways.com/travel/managebooking/public/en_gb?source=PHP-Find-Booking" id="mmbFormTools" name="mmbFormTools" class="row ng-pristine ng-valid ng-valid-maxlength" ng-submit="mmbSubmit($event)">
<div class="form-title"><span data-ba-resource-bundle-static="" data-key="travelToolBarFindBooking" class="ng-binding ng-isolate-scope">Manage My Booking</span></div><input value="104002" name="eId" type="hidden" autocomplete="off">
<div class="input-field small-12 columns"><input autocomplete="off" autocorrect="off" data-ng-model="bookingRefMMBTool" size="25" maxlength="6" type="text" name="bookingRef" id="bookingRefMMBTool" aria-label="Booking reference"
class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <label for="bookingRefMMBTool" class="ng-binding">Booking reference</label></div>
<div class="input-field small-12 columns"><input spellcheck="false" autocomplete="off" data-ng-model="lastnameMMBTool" size="25" maxlength="59" type="text" name="lastname" id="lastnameMMBTool" aria-label="Last name"
class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <label for="lastnameMMBTool" class="ng-binding">Last name</label></div><button class="button primary small-12 medium-6 right-align columns ng-binding ng-isolate-scope"
type="submit" data-ba-resource-bundle-static="" data-key="travelToolBarFindBookingButton">Continue</button>
</form>
Name: checkinFormTools — POST https://www.britishairways.com/travel/managebooking/public/en_gb?source=PHP-Start-OLCI
<form method="post" action="https://www.britishairways.com/travel/managebooking/public/en_gb?source=PHP-Start-OLCI" id="checkinFormTools" name="checkinFormTools" class="row ng-pristine ng-valid ng-valid-maxlength" ng-submit="olciSubmit($event)">
<div class="form-title"><span data-ba-resource-bundle-static="" data-key="travelToolBarOnlineCheckin" class="ng-binding ng-isolate-scope">Ready to check in?</span>
<p data-ba-resource-bundle-static="" data-key="travelToolBarOnlineCheckinInfo" class="ng-binding ng-isolate-scope">Online check-in opens 24 hours before your flight departs</p>
</div><input value="104510" name="eId" type="hidden" autocomplete="off">
<div class="input-field small-12 columns"><input spellcheck="false" autocomplete="off" data-ng-model="bookingRefCheckinTool" size="25" maxlength="6" type="text" name="bookingRef" id="bookingRefCheckinTool" aria-label="Booking reference"
class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <label for="bookingRefCheckinTool" class="ng-binding">Booking reference</label></div>
<div class="input-field small-12 columns"><input spellcheck="false" autocomplete="off" data-ng-model="lastnameCheckinTool" size="25" maxlength="59" type="text" name="lastname" id="lastnameCheckinTool" aria-label="Last name"
class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <label for="lastnameCheckinTool" class="ng-binding">Last name</label></div><button class="button primary small-12 medium-6 right-align columns ng-binding ng-isolate-scope"
type="submit" data-ba-resource-bundle-static="" data-key="travelToolBarOnlineCheckinButton">Check in</button>
</form>
Name: rtadFormTools — POST
<form method="post" id="rtadFormTools" name="rtadFormTools" class="row ng-pristine ng-valid ng-valid-maxlength ng-valid-required" ng-submit="rtadSubmit($event)">
<div class="form-title"><span class="label-text ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="travelToolBarRtad">Flight status</span>
<p data-ba-resource-bundle-static="" data-key="travelToolBarRtadInfo" class="ng-binding ng-isolate-scope">Check the latest status of our flights over the next 10 days</p>
</div>
<div class="flex-row radio-group">
<div class="input-field input-radio small-12 medium-4 columns"><label class="ng-binding"><input id="rtadDep" name="flightArrDep" type="radio" value="true" data-ng-model="travelToolbarCtrl.flightArrDep"
class="ng-pristine ng-untouched ng-valid ng-not-empty"> Departing</label></div>
<div class="input-field input-radio small-12 medium-4 columns"><label class="ng-binding"><input id="rtadArr" name="flightArrDep" type="radio" value="false" data-ng-model="travelToolbarCtrl.flightArrDep"
class="ng-pristine ng-untouched ng-valid ng-not-empty"> Arriving</label></div>
</div>
<div class="input-field small-12 columns"><input data-ng-model="travelToolbarCtrl.flightNum" spellcheck="false" autocomplete="off" size="29" maxlength="4" type="text" name="flightNum" id="flightNum" aria-label="Flight Number"
class="flight-number-input ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <span class="flight-number-label ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="travelToolBarBA">BA</span> <label
for="flightNum" class="ng-binding">Flight Number</label></div>
<div class="input-field small-12 columns">
<div class="input-select-wrap"><select id="select-dropdown" name="flightDate" required="" aria-required="true" data-ng-model="travelToolbarCtrl.flightDate" class="ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-required">
<option value="2023-08-16" class="ng-binding">Wed 16 Aug</option>
<option ng-selected="selected" value="2023-08-17" class="ng-binding">Thu 17 Aug (Today)</option><!-- ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-18" class="ng-binding ng-scope">Fri 18 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-19" class="ng-binding ng-scope">Sat 19 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-20" class="ng-binding ng-scope">Sun 20 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-21" class="ng-binding ng-scope">Mon 21 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-22" class="ng-binding ng-scope">Tue 22 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-23" class="ng-binding ng-scope">Wed 23 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-24" class="ng-binding ng-scope">Thu 24 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-25" class="ng-binding ng-scope">Fri 25 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-26" class="ng-binding ng-scope">Sat 26 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
<option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-27" class="ng-binding ng-scope">Sun 27 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
</select><span class="icon select-arrow" aria-hidden="true"><img data-ng-src="/cms/global/assets/images/site/icon/header_nav_arrow_up.svg" src="/cms/global/assets/images/site/icon/header_nav_arrow_up.svg"></span></div>
</div>
<div class="row rtad-more-options-wrapper"><button class="button primary small-12 medium-6 columns ng-binding ng-isolate-scope" type="submit" ng-click="travelToolbarCtrl.submitRtad()" data-ba-resource-bundle-static=""
data-key="travelToolBarRtadButton">Find flight</button>
<div class="small-12 medium-6 columns more-options ng-hide" ng-show="showRtad">
<a href="/travel/flightstatus/public/en_gb/search/" data-ng-click="rtadRouteClick($event)" data-ba-resource-bundle-static="" data-key="travelToolBarMore" class="ng-binding ng-isolate-scope">Search by route</a></div>
</div>
</form>
<form data-ng-submit="authenticate(username, password)" class="ng-pristine ng-valid">
<div class="login-error ng-hide" data-ng-show="errorType === 'password'"><img ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" alt="Warning" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg"> <span
data-ba-resource-bundle-static="" data-key="loginErrorDetails" class="ng-binding ng-isolate-scope">Sorry, we don't recognise those details.</span> <span data-ba-resource-bundle-static="" data-key="loginErrorDetails2"
class="ng-binding ng-isolate-scope">Please check and try again.</span></div>
<div class="login-error ng-hide" data-ng-show="errorType === 'locked'"><img ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" alt="Warning" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg"> <span
data-ba-resource-bundle-static="" data-key="loginLocked" class="ng-binding ng-isolate-scope">We have locked your account temporarily to keep it safe and secure. For more information please refer to the email or letter you received from
us.</span></div>
<div class="login-error ng-hide" data-ng-show="errorType === 'system'"><img class="warning" ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" alt="Warning" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg">
<span data-ba-resource-bundle-static="" data-key="systemNotResponding" class="ng-binding ng-isolate-scope">Sorry, our systems are not responding</span></div>
<div class="login-error ng-hide" data-ng-show="errorType === 'login'"><img class="warning" ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" alt="Warning" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg"> <span
data-ba-resource-bundle-static="" data-key="loginError" class="ng-binding ng-isolate-scope">You have made too many login attempts.</span> <span data-ba-resource-bundle-static="" data-key="loginError2" class="ng-binding ng-isolate-scope">Your
account is now locked for up to 24 </span> <span data-ba-resource-bundle-static="" data-key="loginError3" class="ng-binding ng-isolate-scope">hours unless you reset your password.</span></div>
<div class="row collapse loginuser-wrapper">
<div class="small-12 large-12 large-offset-0 medium-12 columns"><input class="loginuser inverted ng-pristine ng-untouched ng-valid ng-empty" id="userAp" type="text" autocapitalize="off" autocorrect="off"
data-ng-class="messageuser ? 'mandatory': ''" name="user" aria-describedby="login-header" data-ng-model="username" aria-label="Login ID / Username"> <label for="userAp" data-ba-resource-bundle-static="" data-key="placeholderUser"
class="ng-binding ng-isolate-scope">Email or username</label>
<div class="field-error ng-hide" data-ng-show="messageuser"><img class="warning" alt="Warning" data-ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg"> <span
data-ba-resource-bundle-static="" data-key="errorMessage" class="ng-binding ng-isolate-scope">Please complete this field</span></div>
</div>
<div class="large-12 small-12 medium-12 columns"><input type="password" id="passAp" class="input-password inverted ng-pristine ng-untouched ng-valid ng-empty" data-ng-class="messagepass ? 'mandatory': ''" name="pass" data-ng-model="password"
autocomplete="off" aria-label="PIN / Password"> <label for="passAp" data-ba-resource-bundle-static="" data-key="placeholderPass" class="ng-binding ng-isolate-scope">PIN or password</label>
<div class="field-error pwd ng-hide" data-ng-show="messagepass"><img class="warning" alt="Warning" data-ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg">
<span data-ba-resource-bundle-static="" data-key="errorMessage" class="ng-binding ng-isolate-scope">Please complete this field</span></div>
</div>
<div class="large-12 small-12 medium-12 columns"><button class="primary ng-binding ng-isolate-scope" type="submit" data-ba-resource-bundle-static="" data-key="login">Log in</button></div>
<div class="medium-2 columns"></div>
</div>
</form>
POST
<form action="" method="POST" data-submit-form-directive="" class="ng-pristine ng-valid ng-isolate-scope"><!-- ngRepeat: (key,val) in formData.params --></form>
Text Content
By continuing to use ba.com you will be agreeing to the website Terms and Conditions and the Use of Cookies while using the website and our services. Please also read our Privacy Policy under which, to the extent stated, you consent to the processing of your personal data. Accept Skip to main content Search for * Log in * Log in MAIN MENU * Discover BA About BA BA Better World The BA experience Travel classes What's new On Business Partners and alliances EXECUTIVE CLUB Join the Club About the Club About Avios Collecting Avios Spending Avios Avios credit cards FLIGHTS AND DESTINATIONS Explore our destinations Flights to New York Flights to Los Angeles Flights to San Francisco Routes and timetables Before you fly Baggage essentials Airport information HOLIDAYS Discover BA holidays Holiday Finder City breaks All Inclusive holidays Other holiday types New York holidays Dubai holidays Tenerife holidays OFFERS AND DEALS Special offers Find our cheapest flights Last-minute deals Planning ahead EXTRAS London airport hotels Airport parking Travel insurance Meet and assist * Book FLIGHTS Book a flight Book a flight with Avios FLIGHTS AND MORE Flight + Hotel Flight + Car Find a hotel Hire a car Book an experience * Manage MY BOOKING My booking Booking reference Last name of passenger Find my booking Online check-in Flight status Flight information EXECUTIVE CLUB Log in to my Executive Club Join the Club * Help CUSTOMER SUPPORT Please visit our Help centre for more support if you have a question about your booking or flight. Help centre BOOKINGS Delays, cancellations and refunds Lost baggage Vouchers ASSISTANCE Contacts and FAQs Flight status Disability and mobility assistance Medical conditions and pregnancy Travel assistance Checking in and boarding TRAVEL NEWS UK rail disruptionCheck country COVID-19 entry requirements More travel news Change country/region and language, United Kingdom - English Skip to Navigation JUST A MOMENT read more read less * Flight * Flight + Hotel * Flight + Car Search for a flight Flights Multi City & Round the World Corporate booking Need Inspiration? Explore all our flight destinations Connected to From type 3 letters To type 3 letters Outbound 17 August Add a return Passengers 1 Adult Travel class Economy Search Close Need Inspiration? Explore all our flight destinations Who are you travelling with? Room 1 1 Adult Edit 1 Adults 16+ years Resource Not Found! 0 Young adults 12 - 15 years Resource Not Found! 0 Children 2 - 11 years Resource Not Found! 0 Infants under 2 years Resource Not Found! Confirm What is your travel class? Cabin Type Economy Premium economy Business First Flexible ticket? Change your flight with no penalty fee Confirm When would you like to go? August 2023 MTWTFSS use tab to navigate through the dates in this month, or tab back up to change the month above with the next and previous buttons 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 LAST-MINUTE BEACH HOLIDAYS Your next break could be closer than you think. Search our last-minute deals for inspiration. SPAIN HOLIDAYS PORTUGAL HOLIDAYS from £255 pp from London, Sep 2023 from £315 pp from London, Sep 2023 SPAIN HOLIDAYS from £255 pp from London, Sep 2023 PORTUGAL HOLIDAYS from £315 pp from London, Sep 2023 SPAIN HOLIDAYS from £255 pp from London, Sep 2023 PORTUGAL HOLIDAYS from £315 pp from London, Sep 2023 Book now 23kg baggage pp | ATOL protection Manage My Booking Check in Check flight status Manage My Booking Booking reference Last name Continue Ready to check in? Online check-in opens 24 hours before your flight departs Booking reference Last name Check in Flight status Check the latest status of our flights over the next 10 days Departing Arriving BA Flight Number Wed 16 AugThu 17 Aug (Today)Fri 18 AugSat 19 AugSun 20 AugMon 21 AugTue 22 AugWed 23 AugThu 24 AugFri 25 AugSat 26 AugSun 27 Aug Find flight Search by route read more read less read more read less YOUR ACCOUNT Sorry, we don't recognise those details. Please check and try again. We have locked your account temporarily to keep it safe and secure. For more information please refer to the email or letter you received from us. Sorry, our systems are not responding You have made too many login attempts. Your account is now locked for up to 24 hours unless you reset your password. Email or username Please complete this field PIN or password Please complete this field Log in Forgot your details? SIGN UP Book flights quicker, pay with Avios and earn rewards as an Executive Club member. Sign up Special offers Cheap flights All-inclusive Summer holidays Last-minute City breaks Beach holidays Business class EUROPEAN CITY BREAKS Experience the energy and excitement of the world's great cities. FLIGHTS FLIGHT + 2 NIGHTS HOTEL from £35 each-way from London, Jan 2024 from £169 pp from London, Dec 2023 FLIGHTS from £35 each-way from London, Jan 2024 FLIGHT + 2 NIGHTS HOTEL from £169 pp from London, Dec 2023 Search city breaks Holiday deposits from £60pp | Generous baggage allowance JUST ANNOUNCED: NEW ROUTES We're adding three exciting new routes to our schedule. Travel this autumn from London Heathrow. Find out where TRENDING DESTINATIONS Orlando Malaga Faro Nice DISCOVER YOUR USA There's always something new waiting to be explored. Book a trip to look forward to with amazing deals on flights. FLIGHTS TO NEW YORK FLIGHTS TO BOSTON from £407 return from London, Oct 2023 from £419 return from London, Oct 2023 FLIGHTS TO NEW YORK from £407 return from London, Oct 2023 FLIGHTS TO BOSTON from £419 return from London, Oct 2023 Search USA flights COLLECT 5,000 BONUS AVIOS When you apply through the link below & spend £1,000 in your first three months of Cardmembership. New Cardmembers only. No annual fee. British Airways American Express® Credit Card Rep 30.0% APR Var. Terms apply. 18+ subject to status. Apply now BEFORE YOU FLY Check your baggage allowance, entry requirements and discover additional services to help your trip go smoothly. Plan your journey USING YOUR VOUCHER Find out how to book a flight or holiday using your voucher. Vouchers are valid for travel up to 30 September 2024. More on vouchers Terms and Conditions apply. IF YOU NEED TO CONTACT US We’re always here to help. Our friendly Customer Services team are on hand to answer all of your queries. How to contact us read more read less PLEASE WAIT WHILE WE BUILD YOUR PERFECT TRIP THIS MAY TAKE A FEW MOMENTS... CHOOSE FROM OUR EXTENSIVE RANGE OF HOTELS, CARS AND EXPERIENCES * Help and contacts | * Accessibility and site help | * Website security | * Privacy policy | * Legal | * About BA | * Media Centre | * Customer Commitment | * Careers | * Sustainability | * Modern Slavery statement | * Iberia.com | * Holidays | * Tenerife holidays | * Flights | * Flights to Spain | * * * * © British Airways - all rights reserved British Airways BEFORE YOU CONTINUE We use cookies to improve your experience on ba.com and show personalised content, depending on your settings. See our Privacy Policy for more. Customise Agree to all cookies Choose your cookie preferences -------------------------------------------------------------------------------- Essential Our website can’t operate properly without essential cookies. We only collect the minimum personal information needed to provide services on ba.com. You can disable these cookies in your browser but parts of ba.com may not work. -------------------------------------------------------------------------------- Analytics We use analytical cookies to measure how you use our website and help improve ba.com. -------------------------------------------------------------------------------- Marketing We use marketing cookies to display personalised advertisements on other sites you may visit. We work with approved partners to deliver relevant content and measure the effectiveness of these advertisements. -------------------------------------------------------------------------------- Functional These cookies let us save the choices you make and some of the information you provide when browsing ba.com. They don’t track your browsing activity on other websites. Without functional cookies, ba.com may not work reliably. -------------------------------------------------------------------------------- Accept all cookies Confirm your choices