Javascript Backbone.js模型验证,不知道这里出了什么问题?

Javascript Backbone.js模型验证,不知道这里出了什么问题?,javascript,validation,backbone.js,Javascript,Validation,Backbone.js,我不知道为什么错误没有出现,或者阻止类似的事情发生。我试图弄清楚如何在这个主干模型上进行验证。将其用于客户端并与之一起学习 当前设置的字符串中没有任何内容 var user = new User(); user.set({'firstName': ''}, {validate:true}); 我的主干代码 var User = Backbone.Model.extend({ defaults: { firstName: 'J.R.', lastName:

我不知道为什么错误没有出现,或者阻止类似的事情发生。我试图弄清楚如何在这个主干模型上进行验证。将其用于客户端并与之一起学习

当前设置的字符串中没有任何内容

var user = new User();
user.set({'firstName': ''}, {validate:true});
我的主干代码

var User = Backbone.Model.extend({
    defaults: {
        firstName: 'J.R.',
        lastName: 'Smith',
        email: 'jsmith@knicks.com',
        phone: '212-424-6234',
        birthday: '03/05/1982',
        city: 'New York'

    },

    validate: function(attrs) {
        if(!attrs.firstName) {
            return 'You must enter a real name.'
        },
        if(!attrs.lastName) {
            return 'You must enter a real name.'
        },
        if(attrs.email.length < 5 ) {
            return 'You must enter a real email.'
        },
        if(attrs.phone.length < 10 && attrs.phone === int) {
            return 'You must enter a real phone number, if you did please remove the dash and spaces.'
        },
        if(attrs.city.length < 2 ) {
            return 'You must enter a real city.'
        },
    },

    location: function(){
        return this.get('firstName') + ' ' + this.get('lastName') + 'is currently in ' + this.get('city') + '.';
    },

    initialize: function() {



        this.on('invalid', function(model, invalid){
            console.log(invalid);
            //when setting a user user.set('age', -55, {validate : true}); the validate true makes sure it validates
        });
    },

});
var User=Backbone.Model.extend({
默认值:{
名字:“J.R.”,
姓氏:“史密斯”,
电邮:'jsmith@knicks.com',
电话:212-424-6234,
生日:“1982年5月3日”,
城市:“纽约”
},
验证:函数(attrs){
如果(!attrs.firstName){
return“您必须输入真实姓名。”
},
如果(!attrs.lastName){
return“您必须输入真实姓名。”
},
如果(attrs.email.length<5){
return“您必须输入真实的电子邮件。”
},
if(attrs.phone.length<10&&attrs.phone==int){
return“您必须输入真实的电话号码,如果输入了,请删除破折号和空格。”
},
如果(属性城市长度<2){
return“您必须进入一个真实的城市。”
},
},
位置:函数(){
返回this.get('firstName')+“”+this.get('lastName')+”当前位于“+this.get('city')+”;
},
初始化:函数(){
this.on('invalid',函数(model,invalid){
console.log(无效);
//设置user.set('age',-55,{validate:true})时,validate true确保它进行验证
});
},
});

将函数验证为语法错误。您不需要在每个if语句之后使用“,”,因为这是一个函数而不是对象文字

    validate: function(attrs) {
        if(!attrs.firstName) {
            return 'You must enter a real name.'
        }
        if(!attrs.lastName) {
            return 'You must enter a real name.'
        }
        if(attrs.email.length < 5 ) {
            return 'You must enter a real email.'
        }
        if(attrs.phone.length < 10 && attrs.phone === int) {
            return 'You must enter a real phone number, if you did please remove the dash and spaces.'
        }
        if(attrs.city.length < 2 ) {
            return 'You must enter a real city.'
        }
    },
验证:函数(attrs){
如果(!attrs.firstName){
return“您必须输入真实姓名。”
}
如果(!attrs.lastName){
return“您必须输入真实姓名。”
}
如果(attrs.email.length<5){
return“您必须输入真实的电子邮件。”
}
if(attrs.phone.length<10&&attrs.phone==int){
return“您必须输入真实的电话号码,如果输入了,请删除破折号和空格。”
}
如果(属性城市长度<2){
return“您必须进入一个真实的城市。”
}
},

出于兴趣,model.validationError属性是否设置为任何值?另外,是否访问了“无效”处理程序?未访问无效错误,并且未将属性设置为任何值。如果删除
validate
方法中的所有多余逗号,则可以正常工作()。我在控制台中删除了它,但仍然不会出错或阻止我更改它。@muistooshort的JSFIDLE适合我,在firstName和lastName属性上。我尝试过,当我将lastName设置为“”时,它仍然无法验证,当我在google chrome的控制台中写入lastName时,它不会抛出错误或阻止更改它。