backbone-validate не срабатывает
помогите пожалуйста понять почему 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/ |
zlodiak,
Биндинг между вьюхой и коллекцией забыл. В файле formView.js метод initialize перепиши так
initialize: function() {
APP.placesCollection = new APP.PlacesCollection();
Backbone.Validation.bind(this, {
collection: APP.placesCollection
});
this.place = new APP.PlaceView(false);
new APP.PaymentModalView();
this.render();
}
|
Цитата:
походу тут только мы бекбон мучаем ps: и всё таки странно. по сути здесь тот же самый код, но никакого биндинга не требовалось |
Цитата:
|
| Часовой пояс GMT +3, время: 04:18. |