当模型是原始的时,AngularJS自定义验证

时间:2014-07-01 18:53:05

标签: angularjs validation

如何设置验证集表格。当初始值无效时(模型是原始的),$ valid为false。如果我手动更改输入,则表单。$ valid将根据输入进行更正。

http://plnkr.co/edit/lDrsCFez8PkROuEC6wvC?p=preview (这基于https://docs.angularjs.org/guide/forms中自定义验证部分的整数指令。)

2 个答案:

答案 0 :(得分:1)

在您的指令中,您只需指定$parser 更改$parser后,$viewValue生效,即通过与视图互动(或以编程方式设置$viewValue)。

但您没有触及$viewValue,只触及$modelValue 如果您想在$modelValue更改时执行验证,则还需要指定$formatter


E.g。在链接功能中添加以下代码:

ctrl.$formatters.push(function (modelValue) {
    if (modelValue && !INTEGER_REGEXP.test(modelValue)) {
        ctrl.$setValidity('integer', false);
    } else {
        ctrl.$setValidity('integer', true);
    }
    // Return the original value regardless of its validity,
    // so it shows up in the view (even if it is invalid).
    return modelValue;
});

另请参阅此 short demo


<强>更新:

我更新了上面的代码和演示,以考虑空值的情况,并在以编程方式更改$modelValue时正确地重新验证。

答案 1 :(得分:0)

为什么不使用type =“number”

<input type="number" ng-model="size" name="size" />