0

Given the following backbone-forms schema snippet:

number_of_products: {
  type: "Text",
  title: "Number of products",
  validators: ["required", "integer"]
},

How would I define validator attributes to restrict input to values between 13 and 42?

4

2 に答える 2

2

まず、をに変更してtypeからNumber、検証関数を追加できます。

function validateNumber(min, max) {
  return function(val) {
    if (val < min || val > max) {
      return {
        type: 'invalid number',
        message: 'Must be between '+min+' and '+max+'.'
      };
    }
  };
}

...

number_of_products: {
  type: "Number",
  title: "Number of products",
  validators: ["required", validateNumber(13, 42)]
}
于 2013-10-30T01:00:57.967 に答える
2

バリデーターの作成はより再利用可能だと思います:

// interval  validator
BackBoneForms.validators.interval = function(options) {
    // get the min value
    var minValue = parseFloat(options.min) || 0;
    var maxValue = parseFloat(options.max) || 0;
    var err = { 
        type: options.type,
        message: "value must between "+minValue+" and "+maxValue
    };
    return function interval(value, attrs) {
        var fieldValue = 0;

        if (value === null || value === undefined || value === '') return err;

        // check if the value is number
        if( !isNaN(parseFloat(value)) && isFinite(value)) {
            fieldValue = parseFloat(value);
        }
        if(  minValue > fieldValue ||  maxValue < fieldValue  ) {
            return err;
        }
        return ;
    }
} 

次のように使用できます。

number_of_products: {
  type: "Number",
  title: "Number of products",
 validators: ["required", {
    type : "interval" , 
    max : 10,
    min : 0

 }]

}

于 2014-07-15T11:32:57.030 に答える