diff --git a/app/code/Magento/CheckoutAgreements/view/frontend/web/js/model/agreement-validator.js b/app/code/Magento/CheckoutAgreements/view/frontend/web/js/model/agreement-validator.js index 3d030a62eb425..3c15506150a7b 100644 --- a/app/code/Magento/CheckoutAgreements/view/frontend/web/js/model/agreement-validator.js +++ b/app/code/Magento/CheckoutAgreements/view/frontend/web/js/model/agreement-validator.js @@ -23,26 +23,38 @@ define( * @returns {boolean} */ validate: function() { - if (!agreementsConfig.isEnabled) { - return true; + var noError = true; + if (!agreementsConfig.isEnabled || $(agreementsInputPath).length == 0) { + return noError; } - if ($(agreementsInputPath).length == 0) { - return true; - } + $('.payment-method:not(._active) div.checkout-agreements input') + .prop('checked', false) + .removeClass('mage-error') + .siblings('.mage-error[generated="true"]').remove(); + + $(agreementsInputPath).each(function() { + var name = $(this).attr('name'); - return $('#co-payment-form').validate({ - errorClass: 'mage-error', - errorElement: 'div', - meta: 'validate', - errorPlacement: function (error, element) { - var errorPlacement = element; - if (element.is(':checkbox') || element.is(':radio')) { - errorPlacement = element.siblings('label').last(); + var result = $('#co-payment-form').validate({ + errorClass: 'mage-error', + errorElement: 'div', + meta: 'validate', + errorPlacement: function (error, element) { + var errorPlacement = element; + if (element.is(':checkbox') || element.is(':radio')) { + errorPlacement = element.siblings('label').last(); + } + errorPlacement.after(error); } - errorPlacement.after(error); + }).element(agreementsInputPath + '[name="' + name + '"]'); + + if (!result) { + noError = false; } - }).element(agreementsInputPath); + }); + + return noError; } } }