1

在Angular中,我试图验证模糊场的值。我有一个客户名单,我想检查该字段中的模型值是否在我的客户名单中。如果不是,我想将有效性设置为false。自定义验证的角度形式 - 模糊

我知道ng-model-options="{updateOn: 'blur'}存在,但是我不能使用它,因为这个字段是一个前面的类型,所以它必须根据模型进行更新。验证是模糊处理需要发生的事情。

的答案似乎是:

  1. 写它作为控制器和使用$ setValidity的功能就像你在一个指令。使用ng-blur在输入字段中触发该功能。

    - 但是,我一直在运行自定义验证的示例(如果模型值与列表中的某个不匹配,则使该字段无效)仅写入指令。是否有作为函数写入的自定义验证示例?

  2. 编写一个只在模糊时触发的指令。

但是,我找不到能够完成这些任务的示例。任何人都有一个自定义验证的例子作为一个函数或一个只更新字段模糊的指令?

我发现这个环节非常有帮助的自定义验证,但我仍然有一个功能和指令之间的差异同样的问题:How to add custom validation to an AngularJS form?

回答

3

由于这是我们最近一直在努力:

<form name='vm.formName' id='vm.formName' novalidate> 
    <input type='text' id='textField' name='textField' ng-blur='vm.blurMethod()' ng-model='vm.model.text' /> 
    // The submit is only here for show; 
    <input type='submit' id='submit' ng-click='vm.submitForm()' /> 
</form> 

在控制器:

blurMethod() { 
    if (this.formName.textField.$viewValue !== myArbitraryValue) { 
    // $setValidity called on the form, setting the textfield's validity to false 
    // then you can have your own validators show the error in the template 
    this.formName.$setValidity('textField', false); 
    } 
} 

这是关我的头顶,将在早上看看它是否反映了我们一直在使用的东西。立即更新$ setValidity调用。

这假设你使用的是controllerAs:'vm'语法,这就是为什么表单有一个名字'vm.formname'并且控制器正在使用'this'。

+0

这看起来很有希望,期待明天的更新 – jenryb

+0

嘿rrd,有没有发现它是否与你一直使用的相匹配? – jenryb

+0

是的,我更新了这篇文章,这是我们正在使用的。在表单上调用$ setValidity()并将输入字段作为参数。 – rrd

1

我已经使用的用户界面,引导用于预输入用大量控制对您的验证ui-bootstrap typeahead

编辑 - 代码示例

<input type="text" ng-model="selected" typeahead="state for state in states | filter:$viewValue | limitTo:8" class="form-control" typeahead-no-results="$scope.matchFail"> <div ng-show="$scope.matchFail">Not on list!!</div>

WHE n您选择的值是不在名单上,在div显示

+0

键入工作正常。你在谈论什么样的验证?如果没有结果,我希望在那里出现错误:“typeahead-no-results $(默认:angular.noop) - 绑定到指示是否找不到匹配结果的变量。”现在它显示没有结果,但它不会在我的表单中引发错误。 – jenryb

+0

这对我没有帮助。我有没有结果工作,它显示div。这部分很简单。不起作用的是验证,例如,在此链接中显示的内容:http://stackoverflow.com/questions/12581439/how-to-add-custom-validation-to-an-angularjs-form。在这种情况下,如果显示typeahead-no-results,则不能提交表单。如果有帮助,下面的答案更接近我正在寻找的答案。 – jenryb