Показать сообщение отдельно
  #1 (permalink)  
Старый 24.06.2016, 13:52
Кандидат Javascript-наук
Отправить личное сообщение для zlodiak Посмотреть профиль Найти все сообщения от zlodiak
 
Регистрация: 24.02.2012
Сообщений: 104

почему форма всегда валидна?
помогите пожалуйста понять почему форма получается всегда валидной

jsfiddle: http://jsfiddle.net/udXL5/629/

я использую плагин backbone-validation и бутстраповские модальные окна. в модели прописываю такие правила валидации:
APP.DiaryModel = Backbone.Model.extend({

  defaults: {
    title: undefined,
    desc: undefined
  },

  validation: {  
    title: [ 
              { required: true, msg: 'Поле не может быть пустым' },
              { minLength: 3,   msg: 'Введите не менее 3 символов' }
            ],    

    desc: [ 
              { maxLength: 200,   msg: 'Введите не более 200 символов' }
            ]                                                                                             
  }       

});


после того как я пытаюсь сабмитить форму с пустым полем #diaryTitle, я получаю в консоли следующее:

is v true true true
(index):164 valid   r {cid: "c3", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}


то есть получается так что форма валидна(!). а в реальности она не валидна. потому что поле #diaryTitle пустое

код, отвечающий за валидацию в APP.DiariesView:

events:{
    'click #showAddDiaryModal' : 'showAddDiaryModal',
    'click #addDiaryBtn' : 'addDiary'
  }, 

  addDiary: function() { 
    var titleValue =  $.trim(this.$el.find('#diaryTitle').val()), 
        descValue =   $.trim(this.$el.find('#diaryDesc').val());

    var model = new APP.DiaryModel();

    model.set({
      title: titleValue,
      desc: descValue
    });  

    console.log('is v', model.isValid(), model.isValid('title'), model.isValid('desc'))

    if(model.isValid()) { 
      console.log('valid', titleValue, descValue, model)
    } else {
      console.log('invalid')
    };
    
  }
Ответить с цитированием