Ramesh Murugesan
Ramesh Murugesan

Reputation: 5013

meteor autoform custom validation message on sibling fields

How do send custom validation message to another schema field ?

SessionSchema = new SimpleSchema({
  'seat.from': {
    type: String,
    max: 10,
    optional: false
  },
  'seat.to': {
    type: String,
    max: 10,
    optional: false
  }
});

ReservationSchema = new SimpleSchema({
  title: {
    type: String
  },
  sessions: {
    type: [SessionSchema],
    min: 1,
    optional: false,
    custom: function() {
     //Its an array object. validation is depends on next array so I made a validation here instead of `SessionSchema`. 
     return "greater-session"; // dispaly error on top of the session. I need to display error message on perticular field in `SessionSchema`. 
    }
  }
});

SimpleSchema.messages({
    "greater-session": "From seat should not lesser then previous session"
});

Autoform:

{{#autoForm id="addReservation" type="method" meteormethod="insertMyReservation" collection="Reservation"}}
 {{> afQuickField name="title" autofocus=''}}
 {{> afQuickField name="sessions" panelClass="group"}}
{{/autoForm}}

How do I achieve this?

Upvotes: 0

Views: 316

Answers (2)

bluebird
bluebird

Reputation: 640

I would try something like this:

ReservationSchema = new SimpleSchema({
  title: {
    type: String
  },
  sessions: {
    type: [SessionSchema],
    min: 1,
    optional: false,
    custom: function() {
     var sessions = this.value; // array;
     var seatTo = 0; // initalize @ 0
     var hasError;

         // loop through seach session 
         _.each(sessions, function(s, index) {

          // if seatFrom < previous seatTo
             if (s['seat.from'] < seatTo) {
                 hasError = true;
             };
             seatTo = s['seat.to']; // update seatTo for next iteration
         }); 

         if (hasError) {
             return "greater-session"; // dispaly error on top of the session. I need to display error message on perticular field in `SessionSchema`. 
         }
    }
  }
});

Upvotes: 0

Thomas Goorden
Thomas Goorden

Reputation: 280

I would suggest you using a custom validator for your SimpleSchema. They have access to more context information.

Upvotes: 0

Related Questions