2014-01-30 44 views
1

如何从视图验证表单到模型?使用Backbone验证表格

我只想检查电子邮件和密码是否至少包含6个字符。如果为true,那么启用该按钮,如果没有,则抛出一条消息。

HTML

<form> 
    <input type="text" name="email" placeholder="Type your email here." /> 
    <input type="password" name="password" placeholder="Type your password here." /> 
    <button disabled>Log In</button> 
</form> 

的JavaScript

var User = new Backbone.Model.extend({ 
}); 

var AppView = Backbone.View.extend({ 
    el: $('form'), 
    events: { 
     'keyup input[name=email]': 'validationScope' 
    }, 
    initialize: function() { 
     this.render(); 
    }, 
    validationScope: function() { 
     console.log('testing'); 
     // What to do here? 
    } 
}); 

var appView = new AppView(); 

要播放,做到这一点right here

+0

幽秘ght想要考虑做一些形式的骨干和验证教程;这是一个相当广泛的问题,有很多不同的答案。 –

回答

2

只是检查,看看是否推算字符的长度为执法机关6

例如

validationScope: function(e) { 
     console.log('testing'); 
     // What to do here? 
     var email = e.currentTarget.value; 

     this.$el.find('button').prop('disabled', !(email.length >= 6)); 

    } 

或者在你的情况,因为你想电子邮件和密码,至少有6个字符

events: { 
     'keyup input[name=email]': 'validationScope', 
     'keyup input[name=password]': 'validationScope' 
    }, 
    initialize: function() { 
     this.render(); 
    }, 
    validationScope: function() { 
     console.log('testing'); 
     // What to do here? 
     var email = this.$el.find('input[name=email]').val(); 
     var password = this.$el.find('input[name=password]').val(); 

     var disable = (email.length < 6 || password.length < 6); 

     this.$el.find('button').prop('disabled',disable); 

    } 

下面是更新了自己的fiddle

+0

如果我通过模型验证,是不是更简洁? –

+0

你并没有真正表明你有一个模型,并不是所有的骨干视图都需要一个模型。此外,如果您的视图与模型绑定,您需要根据视图更新模型的属性,这是主干不会自动执行的(尽管有backbone.js插件可以做到这一点)(例如[骨干.stickit](http://nytimes.github.io/backbone.stickit/)))。 – Jack

+0

我想显示错误消息。基于此,是不是一个模型?我甚至不知道创建模型的最佳方法。 –