0
我正在使用ng-pattern和自定义异步验证程序的angular 1.4。仅当输入有数据时才进行角度验证
我有两个字段与验证,一个是必需的,另一个不是。我需要验证第二个提交的内容,当它有内容时。问题是,当第二个字段的验证器未通过时,我无法提交表单。
有没有一个这样做的优雅方式?
感谢
<input
name="name"
type="text"
ng-model="model.software.name"
required>
<div ng-messages="myForm.myInput.$error" ng-if="myForm.name.$touched && myForm.name.$invalid">
<p ng-message="required">Required warning</p>
</div>
<input
name="myInput"
type="text"
ng-model="myInput"
ng-pattern="/someregex/"
async-validator>
<div ng-if="myForm.myInput.$pending">PENDING</div>
<div ng-messages="myForm.myInput.$error" ng-if="myForm.myInput.$touched && myForm.myInput.$invalid">
<p ng-message="pattern">Pattern warning</p>
<p ng-message="asyncValidator">async warning</p>
</div>
<button ng-click="process()" ng-disabled="myForm.$invalid">Process</button>
这里是我的验证:
app.directive('asyncValidator', ['$http', '$q', function ($http, $q) {
return {
require : 'ngModel',
link : function (scope, element, attrs, ngModel) {
ngModel.$asyncValidators.asyncValidator = function (modelValue, viewValue) {
return $http.post('path', {value : viewValue}).then(
function (response) {
if (not_good) {
return $q.reject(not_good);
}
return true;
}
);
};
}
};
}]);
听起来像是你的异步验证的一个问题。它是否允许空值传递? –
谢谢你,我已经更新了我的问题,并添加了我的验证器。我不确定你的意思是允许空值传递。 顺便说一句,验证器在页面加载时运行一次,也不知道为什么。 再次感谢 – Thibs
是你的服务器说空白值好还是不好? – pherris