0

J'ai par exemple 10 entrées. Et je veux vérifier si elles sont vides à l'aide d'une règle, mais en évitant réitération comme ceci:Une règle pour valider plusieurs entrées avec Backbone.validation

firstInput :{ 
    required: true, 
    msg: 'Empty!' 
}, 
// ... 

tenthInput :{ 
    required: true, 
    msg: 'Empty!' 
} 

est-il une méthode pour utiliser une règle pour toutes les entrées à l'aide Backbone Validation? Et chaque entrée peut avoir d'autres validation unique de règles en même temps, par exemple:

firstInput :{ 
    pattern: email, 
    msg: 'Email!!!' 
} 

Répondre

1

De l'Backbone Validation documentation:

// validation attribute can also be defined as a function returning a hash 
var SomeModel = Backbone.Model.extend({ 
    validation: function() { 
    return { 
     name: { 
     required: true 
     } 
    } 
    } 
}); 

Vous pouvez ensuite ajuster votre modèle pour avoir une fonction:

var SomeModel = Backbone.Model.extend({ 
    /** 
    * List of field which are required. 
    * @type {Array|Function} 
    */ 
    required: ['firstInput', 'secondInput', /*...*/ 'tenthInput'], 
    /** 
    * Same format as Backbone Validation 
    * @type {Object|Function} 
    */ 
    specificValidation: { 
     firstInput: { 
      pattern: "email", 
      msg: 'Email!!!' 
     } 
    }, 

    validation: function() { 
     var inputs = _.result(this, 'required'), 
      rules = _.result(this, 'specificValidation'), 
      requiredRule = { required: true, msg: 'Empty!' }; 

     // apply the default validation to each listed field 
     // only if not already defined. 
     _.each(inputs, function(field) { 
      rules[field] = _.defaults({}, rules[field], requiredRule); 
     }); 

     return rules; 
    } 
}); 
+0

Qu'en est-il des liaisons à une vue? J'ai fait votre exemple mais 'Uncaught TypeError: Impossible de lire la propriété 'call' de undefined' apparaît – nllsdfx

+0

@DmitrySoroka ça devrait marcher, mais j'ai peut-être oublié quelque chose ou peut-être que vous utilisez quelque chose que je ne connais pas, alors le bug est peut-être ailleurs. Il vaudrait mieux que vous posiez une nouvelle question avec un [mcve]. –

+0

Je l'ai compris! Une clé d'un 'specificValidation' peut être un tableau d'objets avec des règles. Mais votre 'rules [field] = _.defaults ({}, rules [field], requiredRule)' ne gère que les objets, pas les tableaux d'objets. – nllsdfx