2015-08-25 62 views
0

在我的基于骨干的项目中,我有一种形式,其中只有一组输入字段是强制性的。例如,输入电话号码的输入框,或包含电话号码的上传文件。骨干验证如何执行基于OR条件的验证

我正在尝试使用Thedersen主干验证http://thedersen.com/projects/backbone-validation/。所有验证模式和方法似乎都是以每个字段为基础的,而不是组合OR。

有没有一种方法可以写一个验证器来说只有一个字段是必需的?

+0

我没有用backbone.validation自己,但在看文档,您可以通过所要求的性能提供了一个功能http://thedersen.com/做到这一点项目/骨干验证/#做,你支持,有条件的验证 – Jack

回答

0

你并不需要使用插件,Backbone有validation OOTB

所有您需要做的就是解析表单,将其存储到模型中并保存。验证将默认运行。

例子:

var Address = Backbone.Model.extend({ 
    validate: function(attrs, options) { 
    if (!attrs.phone1 && !attrs.phone2) { 
     return "You must provide at least 1 phone number"; 
    } 
    } 
}); 
1

你可以为这种特殊情况定义custom "required" validator。在该功能中,您可以检查是否至少给出了一个选项(电话号码或文件)。

事情是这样的:

validation: { 
    attribute: { 
    required: function(val, attr, computed) { 
     return !(val || app.models.phoneFile) 
    } 
    } 
}