【问题标题】:How to define min/max validation on a backbone-form integer text field?如何在骨干形式的整数文本字段上定义最小/最大验证?
【发布时间】:2013-10-29 19:56:22
【问题描述】:

给定以下主干形式架构 sn-p:

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

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

【问题讨论】:

    标签: javascript validation backbone-forms


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我可以在文档的某个地方找到这个吗?如果可以命名请添加链接。
    • 你知道我是否可以限制数字字段,以便在用户单击箭头按钮时停止在限制处?
    • 您是否有机会将minmax 传递给该函数,以便我可以将其重新用于其他Number 字段?
    • 我已经更新了示例,添加了一些可以传递最小值和最大值的内容,以便您可以重用验证器
    【解决方案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
    
     }]
    

    }

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 2014-05-17
      • 2018-04-08
      • 1970-01-01
      相关资源
      最近更新 更多