繁体   English   中英

如何在骨干形式的整数文本字段上定义最小/最大验证?

[英]How to define min/max validation on a backbone-form integer text field?

给定以下骨干形式架构片段:

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

如何定义验证器属性以将输入限制为1342之间的值?

首先,您可以将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)]
}

我认为创建验证器更可重用:

// 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

 }]

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM