Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2.     <form @submit.prevent="onSubmit">
  3.        
  4.         <div class="rs rm col-8 m-col-4">
  5.             <label for="firstname">Voornaam</label>
  6.             <input id="firstname" name="firstname" v-model="naw.firstname" :class="{ 'error': errors.has('firstname') }" v-validate="'required|min:2'" type="text" tabindex="3" />
  7.             <span class="tooltip">{{ errors.first( 'firstname' ) }}</span>
  8.         </div>
  9.         <div class="rs rm col-6 m-col-4">
  10.             <label for="zipcode">Postcode</label>
  11.             <input id="zipcode" name="zipcode" v-model="naw.zipcode" maxlength="7" :class="{ 'error': errors.has('zipcode') }" v-validate="{ required: true, regex: /^[0-9]{4} {0,1}[A-Za-z]{2}$/ }" type="text" tabindex="7" />
  12.             <span class="tooltip">{{ errors.first( 'zipcode' ) }}</span>
  13.         </div>
  14.         <div class="col-3 m-col-3">
  15.             <label for="house_num">Huis nr.</label>
  16.             <input id="house_num" name="house_num" v-model="naw.house_num" :class="{ 'error': errors.has('house_num') }" v-validate="'required|min:1|min_value:1|max:5'" type="number" min="1" tabindex="8"/>
  17.             <span class="tooltip">{{ errors.first( 'house_num' ) }}</span>
  18.         </div>
  19.            
  20.  
  21.         <div class="selectable" v-bind:class="{ 'is-checked': naw.age, 'error': errors.has('age-checkbox') }">
  22.             <span class="indicator"></span>
  23.             <input type="checkbox" id="age-checkbox" name="age-checkbox" v-model="naw.age" ref="age" v-validate="'required'" data-vv-validate-on="input" tabindex="14" />
  24.             <label class="text-label" for="age-checkbox">
  25.                 Ja, ik ben 18 jaar of ouder en ga akkoord met de <a href="static/pdf/lotto_actievoorwaarden.pdf" target="_blank">actievoorwaarden</a>
  26.             </label>
  27.         </div>
  28.  
  29.          
  30.         <button type="submit" v-bind:disabled="waitingForApi" tabindex="16">Doe nu mee<v-spinner v-if="waitingForApi"></v-spinner></button>
  31.  
  32.         </div>
  33.     </form>
  34. </template>
  35.  
  36. <style lang="scss" scoped>
  37. </style>
  38.  
  39. <script>
  40.     import Vue from 'vue';
  41.     import Spinner from '@/app/components/Spinner';
  42.  
  43.     export default {
  44.         components: {
  45.             'v-spinner': Spinner
  46.         },
  47.  
  48.         data()
  49.         {
  50.             return {
  51.                 waitingForApi: false,
  52.                 error: false,
  53.                 apiError: false,
  54.                 naw: {
  55.                     kit: false
  56.                 }
  57.             };
  58.         },
  59.  
  60.         watch: {
  61.             naw: function( pNew, pOld )
  62.             {
  63.                 if( this.error === true )
  64.                 {
  65.                     this.$validator.validateAll().then( result =>
  66.                     {
  67.                         if( result )
  68.                         {
  69.                             this.error = false;
  70.                         }
  71.                     });
  72.                 }
  73.             }
  74.         },
  75.  
  76.         methods: {
  77.             onSubmit( e )
  78.             {
  79.                 this.$validator.validateAll().then( result =>
  80.                 {
  81.                     if( result )
  82.                     {
  83.                         this.waitingForApi = true;
  84.            
  85.                         return this.$store.dispatch( 'saveEntry', entry ).then( ( response ) =>
  86.                         {
  87.                             console.log( 'response', response );
  88.                         })
  89.                         .catch( ( error ) =>
  90.                         {
  91.                             this.apiError = true;
  92.                             this.waitingForApi = false;
  93.  
  94.                             throw new Error( error );
  95.                         });
  96.                     }
  97.                     this.error = true;
  98.                     throw new Error( 'invalid' );
  99.                 })
  100.                 .then( () =>
  101.                 {
  102.                     this.waitingForApi = false;
  103.                     this.$router.replace({ path: '/bedankt' });
  104.                 })
  105.                 .catch( () =>
  106.                 {
  107.                     this.waitingForApi = false;
  108.                 });
  109.             }
  110.         }
  111.     };
  112. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement