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, время: 08:42. |