我有一个REFERENCE_NUMBER字段,它需要针对不同的条件进行不同的验证。例如,当支付类型为"A“时,REFERENCE_NUMBER字段必须是具有一定长度的字母数字。当支付类型为if "B“时,REFERENCE_NUMBER字段必须是不同长度的数字。我正在验证使用ng regex模式(ng模式)。如果"A“我需要ng消息来显示”必须只输入字母数字值“,而"B”则需要一条“必须只输入数字值”的消息。如何使用单个字段来识别模式是数字还是字母数字?
在我的控制器中,我创建了一个对象,用于根据支付模式选择模式-
var refnumpattern = {
1: {"maxlength":"100","ngpattern":""}, //cash
2: {"maxlength":"100","ngpattern":"" } , //credit card
3: {"maxlength":"6", "ngpattern":"^[0-9]+$"},//DD
4: {"maxlength":"100","ngpattern":""},//Debit card
5: {"maxlength":"100" , "ngpattern":""},//netbanking
6: {"maxlength":"6", "ngpattern":"^[0-9]+$"},//Cheque
7: {"maxlength":"100","ngpattern":""},//COD
8: {"maxlength":"11", "ngpattern":"^[0-9]+$"}, //merchant
};
$scope.referenceNumberPattern = refnumpattern[$scope.paymentMode.ID];在Html中,我使用referenceNumberPattern对象来设置最大长度和模式-
<input id="txtReference" name="txtReference" type="text" ng-model="referenceNumber" ng-pattern="{{referenceNumberPattern.ngpattern}}" ng-maxlength="{{referenceNumberPattern.maxlength}}" />
<div ng-messages="aForm.txtReference.$error" ng-show="aForm.txtReference.$dirty && aForm.txtReference.$invalid" class=" error-message">
<div ng-message="pattern">Please enter alphabets, numbers and spaces</div> <!-- Here I need to display numeric or alphanumeric message based on the pattern -->
<div ng-message="maxlength">Reference Number can be of {{referenceNumberPattern.maxlength}} length only</div>
</div>发布于 2017-10-12 08:43:44
你能做的是首先检查类型。并决定要使用什么regex表达式和错误消息。
if($scope.type == 'A')
{
$scope.pattern= 'your expression';
$scope.errorMessage = 'your error message';
$scope.maxLenght = 10;
}
else if($scope.type == 'B')
{
$scope.pattern= 'your expression';
$scope.errorMessage = 'your error message';
$scope.maxLenght = 20;
}https://stackoverflow.com/questions/46703343
复制相似问题