Lar*_*s J 7 forms validation angularjs
我正在撰写一份指令,以验证瑞典社会安全号码(personnummer).要在这样的输入元素上使用:
<input type="text" ng-model="pnr" pnrvalidator />
Run Code Online (Sandbox Code Playgroud)
瑞典社会安全号码的格式为yyyymmdd-nnnn例如19121212-1212
只要我使用,我的指令就可以使用type="text".但由于我希望在移动浏览器上使用数字键盘,然后我改为type="number":
<input type="number" ng-model="pnr" pnrvalidator />
Run Code Online (Sandbox Code Playgroud)
然后我的验证器只有在我的输入中没有输入破折号( - )时才有效,例如191212121212.如果我输入19121212-1212那么它不是有效数字.并且ng-invalid ng-invalid-number类被添加到我的input元素中
当我编写我的指令时,我遵循文档如何修改内置验证器https://docs.angularjs.org/guide/forms
但它似乎不适用于type=number验证,或者我是否错过了什么?我使用角度1.3(和1.4).
我的指令代码:
angular.module('example').directive('pnrvalidator', function(){
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
var validatePnr = function(inputString){
/*
* My validation logic here. Removed for this example
*/
};
ctrl.$validators.number = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
// consider empty models to be valid
return true;
}
if (validatePnr(viewValue)) {
// it is valid
return true;
}
// it is invalid
return false;
};
}
};
});
Run Code Online (Sandbox Code Playgroud)
我的例子http://plnkr.co/edit/OFYG06YEFwKg8zrLYVN1?p=preview的一个plunker
您可以通过标记中的 novalidate 属性告诉 html 不要验证 html 表单。当您在 angularjs 中进行验证时,您不需要通过 HTML 再次验证它。
http://www.w3schools.com/tags/att_form_novalidate.asp
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |