2015-08-25 60 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) 
    } 
    } 
}