基本上我需要能够注册两种类型的代码。代码类型 A 只有数字,代码类型 B 有数字、一个连字符、一个字母值和一个数值。
假设情况:
代码 - A 型
12345678
32445678
56535678
带补码的代码 - B 型
32445678-a1
32445678-a2
65434567-b1
表格
<form>
<span>Insert code:</span><br/>
<input type="text" data-ng-model="code" code-type> <br/>
<input type="checkbox" data-ng-model="validateCodeTypeB" /> Validate code Type B
</form>
注意:当 'validateCodeTypeB' 选项被选中时,正则表达式也将被更改。但我不知道如何实现第二个正则表达式来验证代码类型 B。
看例子
和指令
app.directive('codeType', function () {
return {
require: 'ngModel',
link: function (scope, element, attr, ngModelCtrl) {
function codeTypeA(text) {
if (text) {
var transformedInput = text.replace(/[^0-9]/g, '');
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return transformedInput;
}
return undefined;
}
ngModelCtrl.$parsers.push(codeTypeA);
}
}
});
在这里,我为您提供了 plnkr 解决方案:
if(!scope.codeType){
transformedInput = text.replace(/[^0-9]/g, ''); // For CodeTypeA
} else {
transformedInput = text.replace(/[^a-z]/g,''); // For CodeTypeB, change it to your own regex
}
https://plnkr.co/edit/IfIeXhy7vZacLi2jKsMs?p=preview
但是正则表达式对于 CodetypeB 是不同的,将其更改为 codetypeB 的正则表达式并且很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句