我想知道你们是否可以帮助我在javascript中构建一个函数,该函数在keypress事件中执行,防止超过10位数作为整数,2位作为小数。
Correct format: 1234567890.12 (10 digits as integer and 2 decimal)
Wrong format: 123456778901.123 (11 digits as integer and 3 decimal)
如果用户输入超过10位数作为整数,则应返回false以不添加它,但如果已定义则保留2小数点。
我会自己做,但我没有想法:(
这就是我的尝试,但它从不让我尊重2小数点。
const theIntegerNumber = ($scope[ngModelName] - ($scope[ngModelName] % 1).toFixed(2)).toFixed(0);
if( theIntegerNumber.length >= 10){
$scope[ngModelName] = parseFloat($scope[ngModelName]).toFixed(2);
$event.preventDefault();
}
// I am using angular tho.
修改
<input ng-model="__incomeUnitAmount" ng-keypress="filterValueAcceptedData('__incomeUnitAmount', '__incomeUnitAmount_error_format', '10Digit2Decimal', $event);" type="text" name="incomeUnitAmount-amount"
&GT;
答案 0 :(得分:1)
使用正则表达式:
var regex = new RegExp("^\\d{0,10}\.\\d{2}$");
isValidFormat = function(str) {
return regex.test(str);
}
console.log('%s: %s', '1234567890.10', isValidFormat("1234567890.10"));
console.log('%s: %s', '123456778901.123', isValidFormat("123456778901.123"));
修改强>
模式已更新为制作数字选项的点和小数部分(因为点和小数通常不会立即由用户输入)。
使用Angular,使用ng-pattern
指令:
function formCtrl($scope){
$scope.onSubmit = function(){
alert("form submitted");
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<form name="myForm">
<input type="text" ng-model="intValue" name="int_field" ng-pattern="/^\d{1,10}\.?\d{0,2}$/" required><br/>
<span ng-show="myForm.int_field.$error.pattern">Not a valid number!</span><br/>
<tt>myForm.price_field.$error.pattern = {{myForm.int_field.$error.pattern}}</tt><br/>
</form>
</div>