2015-01-09 6 views
0

Мой вопрос в отношении старшего вопрос о переполнении стека:дата Нокаут проверки О.Б.

Knockout validation

Вопрос о дате проверки в knockout.js и knockout.validation.js.

Есть ли у кого-нибудь хороший пример привязки нокаута в MVC 4, который проверяет запись даты?

Используя ссылку выше я осуществил следующий образец:

ko.validation.rules['simpleDate'] = { 
     validator: function (val, validate) { 
      return ko.validation.utils.isEmptyVal(val) || moment(val, 'MM/DD/YYYY').isValid(); 
     }, 
     message: 'Invalid date' 
    }; 

рядом, я связала правила:

self.ChildDateOfBirth = ko.observable().extend({ simpleDate: true }); 

Вся идея этого, если пользователь вводит 14/02/2009 затем теряет фокус, тогда сообщение должно появляться рядом с полем как недопустимая дата.

я должен делать что-то не так ...

ответ

3

Вы звоните ko.validation.registerExtenders(); после того, как вы добавили правило проверки?

Согласно documentation, вам необходимо позвонить.

Работает в моем jsfiddle.

+0

Я тоже .. Я также использовал модель MVC 4.0. Может быть, это еще одна проблема? Я заметил, что вы добавили привязку данных, я предполагаю, что это то, что мне нужно добавить? – dawriter

+1

Да. Вот как работает нокаут. Вам нужно привязать каждое поле к вашей viewModel на стороне клиента. Обычно вы конвертируете MVC-модель в json и назначаете ее переменной, а затем передаете ее в свой конструктор viewmodel, который затем заполняет ваши наблюдаемые. Взгляните на один из моих [предыдущих ответов] (http://stackoverflow.com/a/27862522/2326610), который показывает, как это сделать. –

+0

Я собираюсь дать эту попытку - это наиболее полезно. – dawriter