我试着做一些基本的角度形式验证。
<input type="text" class="form-control" id="bank-name" name="scode" ng-class="{ 'error' : (form.scode.$invalid && form.scode.$touched) }" maxlength="6" required numbers-only/>
<div ng-show="form.$submitted || form.scode.$touched">
<p class="error" ng-show="form.bankname.$error.required">
scode is required.
</p>
</div>到目前为止还不错。输入只接受数字,并且有最大长度,因为我对它使用了一个指令。
数字专用指令
(function() {
angular.module('app').directive('numbersOnly', function() {
return {
require : 'ngModel',
link : function(scope, element, attrs, ngModelCtrl) {
function insertdash(val) {
var count = 2;
var i = 0;
if (val.length > 2) { return val.replace(/(\d{2})/g, function(match, capture) {
return (i++ < count) ? capture + '-' : capture;
}); }
}
function fromUser(text) {
if (text) {
var transformedInput = text.replace(/[^0-9]/g, '');
if (transformedInput !== text) {
ngModelCtrl.$setViewValue(transformedInput);
ngModelCtrl.$render();
}
return insertdash(transformedInput);
}
return undefined;
}
ngModelCtrl.$parsers.push(fromUser);
}
}
});
})();**
问题,,在捆绑的时候,我需要把数字分开,就像这样,11-11-11。我认为我需要使用regex,我对它知之甚少。
编辑:,我尝试过使用插入破折号函数,但它似乎也不起作用
发布于 2020-04-15 07:21:15
您可以使用这个简单的函数来完成它:
function chunk(str, n) {
var ret = [];
var i;
var len;
for(i = 0, len = str.length; i < len; i += n) {
ret.push(str.substr(i, n))
}
return ret
};
chunk("11111111", 2).join('-');示例:
function chunk(str, n) {
var ret = [];
var i;
var len;
for(i = 0, len = str.length; i < len; i += n) {
ret.push(str.substr(i, n))
}
return ret
};
var numbers = 111111111111;
var result1 = chunk(numbers.toString(), 2).join('-');
var numbersAsString = "111111111111"
var result2 = chunk(numbersAsString, 2).join('-');
console.log("result1: ", result1)
console.log("result2: ", result2)
https://stackoverflow.com/questions/61222136
复制相似问题