Javascript 带有正则表达式和年份日期输入字段的AngularJS ng模式函数
我的客户请求向文本输入中添加唯一的表单验证规则,该规则只包含4位数字,不包含字符。输入仅应采用2015年等年份格式。问题是,客户端不希望用户输入的年份少于当前年份,并且不能超过当前年份的10年 所以我创建了一个如下的函数:Javascript 带有正则表达式和年份日期输入字段的AngularJS ng模式函数,javascript,regex,angularjs,Javascript,Regex,Angularjs,我的客户请求向文本输入中添加唯一的表单验证规则,该规则只包含4位数字,不包含字符。输入仅应采用2015年等年份格式。问题是,客户端不希望用户输入的年份少于当前年份,并且不能超过当前年份的10年 所以我创建了一个如下的函数: $scope.startYearPattern = function() { var date = new Date(); var year = date.getFullYear(); var regex = /^[0-9]{2}$/;
$scope.startYearPattern = function() {
var date = new Date();
var year = date.getFullYear();
var regex = /^[0-9]{2}$/;
if(EditProgCtrl.programDetails.academicYear > year && EditProgCtrl.programDetails.academicYear < year + 10 && regex);
};
在html上,我有:
<div class="col-xs-6 form-horizontal program-edit" data-ng-class="{ 'has-error': programEditForm.academicYear.$invalid && programEditForm.academicYear.$touched }">
<div class="form-group required">
<label for="academicYear" class="col-xs-4 horizontal-left control-label">
Start Year
</label>
<div class="col-xs-6 program-edit">
<input type="text" ng-pattern="startYearPattern()" class="form-control input-sm" max="3000" name="academicYear" id="academicYear" data-ng-model="EditProgCtrl.programDetails.academicYear" title="Please enter a valid year" required="required" />
<div data-ng-if="programEditForm.academicYear.$touched" data-ng-messages="programEditForm.academicYear.$error">
<span class="help-block" data-ng-message="required">required field</span>
<span class="help-block" data-ng-message="pattern">Wrong Year Format</span>
</div>
</div>
</div>
</div>
但它不起作用,所以我遗漏了一些东西,只是不知道出了什么问题。ng模式通常只接受类似ng模式的模式=/^[0-9]{4}$/我想。我给你写了一个验证指令
myModule.directive('academicYearValidation', academicYearValidation );
function academicYearValidation() {
return {
restrict: 'A',
require: 'ngModel',
link: link
}
function link (scope, element, attrs, ngModel) {
function validator(modelValue, viewValue) {
var value = modelValue || viewValue;
var date = new Date();
var year = date.getFullYear();
var regex = /^[0-9]{4}$/;
if(regex.test(value) && value > year && value < year + 10){
return true;
}else{
return false;
}
}
ngModel.$validators.academicyearvalidation = validator;
}
};
ngModel.$validators在angular 1.3中是新的,在1.3U必须使用ngModel.$Parser和ngModel.$formatters之前
我给你做了一个plunker^[0-9]{2}$只匹配两位数字。请尝试使用此^[0-9]{4}$作为4位数字。返回语句缺失,ifreturn语句的正文没有帮助我已将正则表达式更改为^[0-9]{4}$我现在在指令中有此项,但我收到一个错误,如acedemicYear未定义ifscope.programDetails.academicYear>year&&scope.programDetails.academicYear