помогите пожалуйста понять почему
backbone-validate отказывается валидировать форму
я сделал следующее:
в форме имеется набор полей. правила валидации прописаны в модели:
APP.PlaceModel = Backbone.Model.extend({
defaults: {
idPlace: undefined,
length: undefined,
width: undefined,
height: undefined,
volume: undefined,
weight: undefined,
overCargo: undefined,
hardBox: undefined
},
validation: {
length: [
{ required: true, msg: 'Поле не может быть пустым' },
{ pattern: 'number', msg: 'Введите число' },
{ pattern: /^[0-9]\d*(\.\d+)?$/, msg: 'Введите положительное число' },
{ pattern: /^[1-9]\d*(\.\d+)?$/, msg: 'Число не может быть нулём' }
],
width: [
{ required: true, msg: 'Поле не может быть пустым' },
{ pattern: 'number', msg: 'Введите число' },
{ pattern: /^[0-9]\d*(\.\d+)?$/, msg: 'Введите положительное число' },
{ pattern: /^[1-9]\d*(\.\d+)?$/, msg: 'Число не может быть нулём' }
],
height: [
{ required: true, msg: 'Поле не может быть пустым' },
{ pattern: 'number', msg: 'Введите число' },
{ pattern: /^[0-9]\d*(\.\d+)?$/, msg: 'Введите положительное число' },
{ pattern: /^[1-9]\d*(\.\d+)?$/, msg: 'Число не может быть нулём' }
],
volume: [
{ required: true, msg: 'Поле не может быть пустым' },
{ pattern: 'number', msg: 'Введите число' },
{ pattern: /^[0-9]\d*(\.\d+)?$/, msg: 'Введите положительное число' },
{ pattern: /^[1-9]\d*(\.\d+)?$/, msg: 'Число не может быть нулём' }
],
weight: [
{ required: true, msg: 'Поле не может быть пустым' },
{ pattern: 'number', msg: 'Введите число' },
{ pattern: /^[0-9]\d*(\.\d+)?$/, msg: 'Введите положительное число' },
{ pattern: /^[1-9]\d*(\.\d+)?$/, msg: 'Число не может быть нулём' }
]
}
});
после того как пользователь кликает по кнопке submit происходит валидация:
events:{
'click #submitBtn' : 'submit',
'click #addPlaceBtn' : 'addPlace'
},
submit: function() {
var validationSuccess = true,
data = this.$el.find('#shippForm').serializeObject();
console.log(data, 'data')
APP.placesCollection.each(function(model) {
model.set(data);
console.log(model, 'model')
console.log(model.isValid('length'), 'is valid length')
console.log(model.isValid(true), 'is valid model')
for(attr in model.attributes) {
if((attr != 'idPlace') && (attr != 'hardBox') && (attr != 'overCargo')) {
console.log(model.isValid(attr), attr)
if(!model.isValid(attr)) {
validationSuccess = false;
};
};
}
}, this );
console.log(validationSuccess)
//$('#paymentModal').modal('show');
},
проблема в том, что все методы isValid() высегда возвращают true(даже для явно неввалидной формы - не заполненной). это хорошо видно по выводу в консоли
мне это не понятно
полная версия тут:
https://github.com/zlodiak/shipping_form
живая страничка тут:
http://fh79272k.bget.ru/files/works/shipping_form/1/