自定义表单验证:JSON

时间:2015-01-08 11:12:07

标签: html json angularjs validation

我正在尝试使用Angular的FormControl验证 JSON 输入。

执行此操作的常规方法(例如电子邮件)将是:

<form name="form">
   <textarea ng-model="data.email" type="email" name="email"></textarea>
</form>

有几个内置&#34;代币&#34; Angular's FormControl中的(电子邮件,电话号码,日期......)

  • 是否可以构建自己的 JSON &#34;令牌&#34;? < ... type="json">

  • 如果没有,是否有更简单的方法进行此验证?我不一定需要AngularJS。

1 个答案:

答案 0 :(得分:0)

你可以为json构建它。但它不会是type="json"。它将是type="text" validate-json,然后您可以添加自定义指令。

app.directive('validateJson', function(){
   return {
      restrict: 'A',
      require: 'ngModel',
      link: function(s,e,a,c) {
         c.$parsers.puch(function(value){
             if(value is json) {
                 c.$setValidity('json', true);
             } else {
                 c.$setValidity('json', false);
             }
         });
      }
   }
})

当然javascript中没有像value is json那样的东西。我实际上并不知道如何将字符串验证为有效的JSON。但这是一个概念。

现在您可以使用ngMessages报告错误

<form name="form">
   <textarea ng-model="data.email" type="text" name="json_field" validate-json></textarea>
   <div ng-messages="form.json_field.$error">
      <div ng-message="json">Field is not valid JSON.</div>
   </div>
</form>