1

我有一个包含 2 个字段、邮政编码和国家/地区的表格。我需要根据国家选择验证邮政编码,使用 $validators

这是 ngController 代码

$scope.schema = {
"type": "object",
"title": "my form",
"properties": {
  "postalCode": {
    "title": "Postal Code",
    "type": "string"
  },
  "countryCode": {
    "title": "Country",
    "type": "string",
    "enum": [
      "CA",
      "US"
    ]
  }
},
"required": [
  "countryCode"
]
};


  $scope.form = [{
  "key": "postalCode",
  $validators: {
        // I would like to pass countryCode as the argument but doesn't work because I don't have model in my closure
        postalCodeRegex: function (countryCodeValue) {
            if (angular.isString(countryCodeValue)) {                  
                var canada = "^(?!.*[DFIOQU])[A-VXY][0-9][A-Z]●?[0-9][A-Z][0-9]$";
                if (/canada/.test(countryCodeValue)) return true;
                else return false;
            }
            // if value is empty
            return true;
        }
    }
},
"countryCode", {
  "type": "submit",
  "style": "btn-info",
  "title": "OK"
}
];

是否有另一种方法可以从 $validators 逻辑访问模型或范围?

plunker 链接以查看我的代码: http ://plnkr.co/edit/DDbMiw?p=info

4

1 回答 1

0

@houss您可以使用 onChange 将值组合成一个新值“US-90210”,保存在作为表单一部分添加的键的隐藏字段中,然后使用涵盖两种格式的正则表达式验证该隐藏字段。或者,如果您可能需要多个国家/地区,那么我会使用可以通过附加机制添加的指令。与 datepicker 示例类似,但在模板中添加一个组件来完成繁重的工作

于 2016-04-24T16:16:32.360 回答