diff --git a/app/assets/javascripts/darkswarm/controllers/checkout/accordion_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/checkout/accordion_controller.js.coffee index b9bc76ced5..c2726f0d53 100644 --- a/app/assets/javascripts/darkswarm/controllers/checkout/accordion_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/checkout/accordion_controller.js.coffee @@ -6,6 +6,15 @@ Darkswarm.controller "AccordionCtrl", ($scope, storage, $timeout, CurrentHub) -> billing: false storage.bind $scope, "accordion", {storeName: "accordion_#{$scope.order.id}#{CurrentHub.hub.id}#{$scope.order.user_id}"} - $scope.show = (name)-> - $scope.accordion[name] = true + $scope.show = (section)-> + $scope.accordion[section] = true + $scope.$on 'purchaseFormInvalid', (event, form) -> + # Scroll to first invalid section + # TODO: hide all first + # TODO: Use Object.keys($scope.accordion) + sections = ["details", "billing", "shipping", "payment"] + for section in sections + if not form[section].$valid + $scope.show section + break diff --git a/app/assets/javascripts/darkswarm/controllers/checkout/checkout_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/checkout/checkout_controller.js.coffee index ed99c6bd41..950be00bae 100644 --- a/app/assets/javascripts/darkswarm/controllers/checkout/checkout_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/checkout/checkout_controller.js.coffee @@ -21,4 +21,7 @@ Darkswarm.controller "CheckoutCtrl", ($scope, storage, Checkout, CurrentUser, Cu $scope.purchase = (event, form) -> event.preventDefault() $scope.submitted = true - $scope.Checkout.submit() if form.$valid + if form.$valid + $scope.Checkout.submit() + else + $scope.$broadcast 'purchaseFormInvalid', form