Javascript Angular JS:基于数字或字母数字模式的单个字段上的多个错误消息

Javascript Angular JS:基于数字或字母数字模式的单个字段上的多个错误消息,javascript,angularjs,Javascript,Angularjs,我有一个REFERENCE_NUMBER字段,它需要针对不同的条件进行不同的验证。e、 g.当付款类型为“A”时,参考编号字段必须为字母数字,且具有一定长度。如果付款类型为“B”,则“参考编号”字段必须是长度不同的数字。我正在验证usng正则表达式模式(ng模式)。在“A”情况下,我需要显示ng消息“必须只输入字母数字值”,在“B”情况下,我需要显示“必须只输入数字值”的消息。如何使用单个字段来识别模式是数字还是字母数字来实现这一点 在我的控制器中,我创建了一个对象,用于根据支付模式选择模式-

我有一个REFERENCE_NUMBER字段,它需要针对不同的条件进行不同的验证。e、 g.当付款类型为“A”时,参考编号字段必须为字母数字,且具有一定长度。如果付款类型为“B”,则“参考编号”字段必须是长度不同的数字。我正在验证usng正则表达式模式(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中,我使用ReferenceNumber模式对象设置maxlength和模式-

<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>

请输入字母、数字和空格
引用号只能为{{referenceNumberPattern.maxlength}}长度

您可以做的是首先检查类型。并决定要使用的正则表达式和错误消息

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;
}

谢谢你的回复。我觉得这个不错。但是还有别的办法吗?我可以为“模式”属性显示两条ng消息吗?一条显示数字,另一条显示字母数字,用于单个字段?如下-
请输入字母,数字和空格仅输入数字
@UmeshK我想是的。如果我正确理解了您的问题,那么您将需要引用两个不同的变量,如$scope.numericPattern和$scope.alphaNumericPattern。