8

Let's say I have:

self.UserName = ko.observable("").extend({ required: true }).extend({ pattern: '[\S]' });

I'm trying to do something like (I've tried a few variations):

self.UserName = ko.observable("").extend({ required: true }).extend({ pattern: '[\S]', message : 'cannot contain spaces' });

But no luck.

I can see validation bindings mentions validation messages, but it appears to be for a single message for all validation.

And custom validation rules seems over kill, as all I want is a pattern but with a different message.

Am I missing something obvious?

Alex KeySmith
  • 16,657
  • 11
  • 74
  • 152

1 Answers1

12

Your syntax is wrong. You need to assign an object to the pattern property which contains the message and the params

So the correct usage is:

self.UserName = ko.observable("")
    .extend({ required: true })
    .extend({ pattern: {
         message: 'cannot contain spaces',
         params: '[\S]'
}});

Se also the Getting Started example.

nemesv
  • 138,284
  • 16
  • 416
  • 359