如何设置验证集表格。当初始值无效时(模型是原始的),$ valid为false。如果我手动更改输入,则表单。$ valid将根据输入进行更正。
http://plnkr.co/edit/lDrsCFez8PkROuEC6wvC?p=preview (这基于https://docs.angularjs.org/guide/forms中自定义验证部分的整数指令。)
答案 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" />