Javascript 如何将正则表达式从指令传递到输入AngularJs
我有这个指令Javascript 如何将正则表达式从指令传递到输入AngularJs,javascript,angularjs,regex,ng-pattern,Javascript,Angularjs,Regex,Ng Pattern,我有这个指令 angular.module('tutors.components') .directive('formValidator', function() { return { restrict: 'A' link: function (scope, element, attrs) { function nameValidator (input) { var regExp : "/^[a-zA-Z']*$
angular.module('tutors.components')
.directive('formValidator', function() {
return {
restrict: 'A'
link: function (scope, element, attrs) {
function nameValidator (input) {
var regExp : "/^[a-zA-Z']*$/";
var validator : regExp.test(input);
return validator;
}
};
});
这个html
<input form-Validator
type="text"
required
name="firstName"
class="form-control"
ng-maxlength="20"
placeholder="First name"
ng-model="user.firstName"
ng-disabled="vm.isLoading"
tooltip="{{requiredMsg}}"
tooltip-placement="top"
tooltip-trigger="focus"
tooltip-enable="signupForm.firstName.$error.required && signupForm.firstName.$touched">
我想运行指令,以便它验证输入中输入的文本,我曾尝试使用类似以下ng模式的ng模式=“/[a-zA-Z]+/”,但这不起作用(我仍然更喜欢使用它而不是指令)您的指令应该具有小写
表单验证程序
,以获得编译器对指令的调用
此外,您需要将名称验证程序
功能代码更改为以下内容
.directive('formValidator', function() {
return {
restrict: 'A',
require: 'ngModel', //to get ngModelController
link: function(scope, element, attrs, ngModel) {
function nameValidator(input) {
var regExp = "/^[a-zA-Z]$/";
var validator = regExp.test(input);
return validator;
}
ngModel.$validators.push(nameValidator); //should pushed to validators to validate
}
}
})
或者ng模式
应该可以,只是它应该有^
(开始)和$
(结束)
也许我遗漏了一些东西,但您在链接函数中定义了nameValidator,但从未对任何东西调用它。代码段和演示不同步。
ng-pattern="/^[a-zA-Z]*$/"