Javascript 角度JS验证
我正在尝试验证我的文本区域:Javascript 角度JS验证,javascript,angularjs,Javascript,Angularjs,我正在尝试验证我的文本区域: <form id="contact_form" name="contactform" ng-submit="submit(contactform)" role="form"> <textarea class="form-control" id="Message" ng-model="formData.message" ng-trim="false" placeholder="Your message" required="required"
<form id="contact_form" name="contactform" ng-submit="submit(contactform)" role="form">
<textarea class="form-control" id="Message" ng-model="formData.message" ng-trim="false" placeholder="Your message" required="required" rows="8"></textarea>
</form>
当满足此筛选器时,我会打印一个错误:
<span class="help-block" ng-show="(formData.message|wordCounter) > 200">
Max 200 words please!
</span>
最多200字!
但是,当我签入我的控制器
联系人表单时,$valid
始终是true
,如果筛选字计数器超过200,如何使表单无效?您需要创建一个自定义验证指令。使用Angular 1.3非常简单
例如,一个简单的例子:
.directive('maxWords', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModelController) {
ngModelController.$validators.maxWords = function(viewValue, modelValue) {
if (!ngModelController.$isEmpty(modelValue)) {
return modelValue.trim().split(/\s+/).length <= attrs.maxWords;
}
};
}
};
});
.directive('maxWords',function(){
返回{
要求:'ngModel',
链接:函数(范围、元素、属性、ngModelController){
ngModelController.$validators.maxWords=函数(viewValue,modelValue){
如果(!ngModelController.$isEmpty(modelValue)){
返回modelValue.trim().split(/\s+/).length谢谢,这很有效!另一个新手问题,我是否可以将此指令放在应用程序级别或rootController上的某个位置,而不是特定的控制器上,这样我就可以在appYes的其他部分中重用它。当然,您应该在主应用程序模块中定义此指令,并且可以在任何地方使用它。它不依赖于任何特定的控制器控制器。
.directive('maxWords', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModelController) {
ngModelController.$validators.maxWords = function(viewValue, modelValue) {
if (!ngModelController.$isEmpty(modelValue)) {
return modelValue.trim().split(/\s+/).length <= attrs.maxWords;
}
};
}
};
});