diff --git a/app/code/Magento/Checkout/view/frontend/web/js/view/payment/default.js b/app/code/Magento/Checkout/view/frontend/web/js/view/payment/default.js index 529a3f84c1c7afec03d13462e3d2bd291fd91def..b4bdb28e12a9e6d8536f64e6f0c65b78cee197bc 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/view/payment/default.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/view/payment/default.js @@ -5,12 +5,14 @@ define( [ 'ko', + 'jquery', 'uiComponent', 'Magento_Checkout/js/action/place-order', 'Magento_Checkout/js/action/select-payment-method', - 'Magento_Checkout/js/model/quote' + 'Magento_Checkout/js/model/quote', + 'Magento_Customer/js/model/customer' ], - function (ko, Component, placeOrderAction, selectPaymentMethodAction, quote) { + function (ko, $, Component, placeOrderAction, selectPaymentMethodAction, quote, customer) { 'use strict'; return Component.extend({ redirectAfterPlaceOrder: true, @@ -37,7 +39,13 @@ define( * Place order. */ placeOrder: function () { - if (this.validate()) { + var emailValidationResult = customer.isLoggedIn(), + loginFormSelector = 'form[data-role=email-with-possible-login]'; + if (!customer.isLoggedIn()) { + $(loginFormSelector).validation(); + emailValidationResult = Boolean($(loginFormSelector + ' input[name=username]').valid()); + } + if (emailValidationResult && this.validate()) { placeOrderAction(this.getData(), this.redirectAfterPlaceOrder); } },