0

最初のフォームが有効な場合、2 番目のフォームと 3 番目のフォームで div を非表示にします。アイデアは、送信ボタンをクリックすると、これが有効な場合はこの要素を非表示にすることです。

<div class="cover" ng-hide ="form.shipping.$valid"/>

ロジックがAngularのこれらのケースでどのように機能するかはまだはっきりしていません。

私のコードの例:

(function() {

  'use strict';


  var checkOut = angular
    .module('checkOutPageApp', [
      'ngResource',
      'ngAnimate',
      'ngMessages'
    ]);

  // Global controller
  checkOut.controller('globalCtrl', function($scope, $locale) {

    $scope.areaStatus = false;

    $scope.disabled = function() {
      if ($scope.shipping.$valid) {

        return true;

      } else {

        return false
      }
    }



  });

  // Controller for form Shipping address
  checkOut.controller('CheckoutShippingCtrl', ['$scope', '$http', '$location',
    function($scope, $http, $location) {
      this.data = {};
      var self = this;
      this.submit = function(valid) {
        $scope.areaStatus = false;
        if (!valid) {
          return;
        }

        self.submitting = true;

        $http.post('', self.data).then(function() {
          self.data = [];
          $location.path('/completed');
        }, function(response) {
          self.submitting = false;
        });
      };
    }
  ]);

}(window, window.angular));
<div class="modifyAddressShipping" ng-controller="CheckoutShippingCtrl as form">
  <form id="shipping" class="shipping" name="shipping" novalidate ng-submit="form.submit(shipping.$valid)" ng-class="{'loading': form.submitting, 'is-el-dirty' : shipping.$dirty || shipping.dirty}">
    <fieldset class="billing reset-style">
      <div id="shipping_address" class="group-items-form active">
        <div class="row collapse">
          <div class="row">
            <!-- / .items-form -->
            <div class="large-12 columns items-form">
              <label>
                <input class="field field-chk" type="text" name="name" placeholder="Name" ng-model="form.data.name" required/>
              </label>
              <div class="error" ng-if="shipping.$submitted || shipping.name.$touched" ng-messages="shipping.name.$error">
                <p class="text-msg" ng-message="required">You did not enter your name</p>
              </div>
            </div>
          </div>
        </div>
      </div>
    </fieldset>
    <div class="chk-box">
      <div class="large-24 column box-chk-btn chk-btn-sm">
        <button ng-click="areaStatus = !areaStatus" type="submit" class="chk-btn button-cta" data-ng-disabled="shipping.$invalid">
          Next
        </button>
      </div>
    </div>
  </form>
</div>

<div class="delivery-payment-card-chk">
  <form id="delivery_payment_form" novalidate name="formDelivery" class="min-h-3333" data-ng-submit="deliveryForm(formDelivery.$valid)">
    <fieldset class="billing reset-style">
      <div id="delivery_payment" class="group-items-form">

        <div class="large-24 column items-form">
          <label for="delivery1">
            <input name="delivery" type="radio" id="delivery1" checked>2nd Class Delivery</label>
          <label for="delivery2">
            <input name="delivery" type="radio" id="delivery2">Click & Collect</label>
          <label for="delivery3">
            <input name="delivery" type="radio" id="delivery3">48 Hour</label>
          <label for="delivery4">
            <input name="delivery" type="radio" id="delivery4">Next Working Day</label>
          <label for="delivery5">
            <input name="delivery" type="radio" id="delivery5">Saturday Courier Delivery</label>
          <!-- / label -->
        </div>
        <!-- / .items-form -->

      </div>
    </fieldset>
    <div class="chk-box">
      <div class="large-24 column box-chk-btn chk-btn-sm">
        <button class="chk-btn button-cta" data-ng-disabled="disabled">
          Next
        </button>
      </div>
    </div>
  </form>
</div>


<div class="sd-delivery-payment-card-chk" ng-controller="CheckoutPaymentCtrl as form">
  <form name="checkoutPayment" novalidate class="min-h-3333" ng-submit="form.submit(checkoutPayment.$valid)" ng-class="{loading:form.submitting}">
    <fieldset class="sd-billing reset-style">
      <div id="delivery_payment" class="sd-group-items-form">

        <div class="large-24 columns items-form">
          <label>
            <input class="sd-field field-chk" type="text" ng-disabled="disabled" name="name" placeholder="Name" ng-model="form.data.name" required></input>
          </label>
          <div class="error" ng-if="checkoutPayment.$submitted || checkoutPayment.name.$touched" ng-messages="checkoutPayment.name.$error">
            <p class="text-msg" ng-message="required">You did not enter your name</p>
          </div>
        </div>
        <!-- / .sd-items-form -->

        <div class="large-24 columns items-form">
          <label>
            <input type="text" id="card_number" name="cardnumber" card-data-type autocomplete="off" size="19" ng-minlength="15" maxlength="19" nd-disabled="" class="sd-field" placeholder="XXXX XXXX XXXX XXXX" ng-class="(form.data.cardnumber | checkcreditcard)" ng-model="form.data.cardnumber"
            required>
            <small class="checkCard" ng-class="(form.data.cardnumber | checkcreditcard)"></small>
          </label>
          <div class="error" ng-if="checkoutPayment.$submitted || checkoutPayment.cardnumber.$touched" ng-messages="checkoutPayment.cardnumber.$error">
            <p class="text-msg" ng-message="required">You did not enter your card number</p>
          </div>
        </div>
        <!-- / .sd-items-form -->

        <div class="large-6 columns items-form">
          <label>
            <input id="expiry_date" maxlength="5" name="datacard" card-data-expiration ng-disabled="" class="sd-field txt-center p-l-0" ng-model="form.data.datacard" type="text" type placeholder="MM / YY" required></input>
          </label>
          <div class="error" ng-if="checkoutPayment.$submitted || checkoutPayment.datacard.$touched" ng-messages="checkoutPayment.datacard.$error">
            <p class="text-msg" ng-message="required">Not valid date credit card</p>
          </div>
        </div>
        <!-- / .sd-items-form -->

        <div class="large-5 columns items-form">
          <label>
            <input name="cvv" class="sd-field txt-center p-l-0" ng-disabled="disabled" maxlength="4" ng-minlength="3" type="text" ng-pattern="/^[0-9]+$/" placeholder="CVV" ng-model="form.data.cvv" required></input>
          </label>
          <div class="error" ng-if="checkoutPayment.$submitted || checkoutPayment.cvv.$touched" ng-messages="checkoutPayment.cvv.$error">
            <p class="text-msg" ng-message="required">Security code required</p>
          </div>
          <div class="error" ng-show="checkoutPayment.cvv.$error.pattern">
            <p class="text-msg">Security code must contain only numbers</p>
          </div>
          <div class="error" ng-show="checkoutPayment.cvv.$error.minlength">
            <p class="text-msg">Security code must be 3-4 digits</p>
          </div>
        </div>
        <!-- / .sd-items-form -->
      </div>
</div>
</fieldset>
<div class="sd-chk-box">
  <div class="large-24 column box-chk-btn chk-btn-sm">
    <button type="submit" class="sd-chk-btn button-cta" ng-disabled="!checkoutPayment.$invalid">
      Place order
    </button>
  </div>
</div>
</form>
</div>

4

1 に答える 1