我在HTML中有一个数字输入框,我想让它成为整数,而不是浮点数。
所以,如果我有这个:
<input type="number" ng-model="person.age" />
Angular将认为18.4的值是有效的。我该如何解决这个问题?
我在HTML中有一个数字输入框,我想让它成为整数,而不是浮点数。
所以,如果我有这个:
<input type="number" ng-model="person.age" />
Angular将认为18.4的值是有效的。我该如何解决这个问题?
function Main($scope) {
$scope.regex = "/^-?[0-9][^\.]*$/";
}
input.ng-dirty.ng-invalid { color: red }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<div ng-controller="Main">
<form name="form">
<input type="number" ng-model="person.age" ng-pattern="/^-?[0-9][^\.]*$/"/>
<input type="number" ng-model="person.age1" ng-pattern="{{regex}}" />
</form>
</div>
</div>
试一下这个
$scope.regex = "/^-?[0-9][^\.]*$/";
<input type="number" ng-model="person.age" ng-pattern="{{regex}}"/>
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
...
export class IntegerComponent implements OnInit {
fgInteger: FormGroup;
...
constructor(private formBuilder: FormBuilder) { }
ngOnInit(): void {
this.fgInteger = this.formBuilder.group({
amount: ['', [Validators.required, ..., Validators.pattern('^\\d+$')]]
});
}
}
这是我使用的.ts模式:
此外,在我的.html文件中,我有以下代码:
<form id="fgInteger" [formGroup]="fgInteger" novalidate #fform="ngForm" (ngSubmit)="onSubmit()">
<mat-form-field appearance="outline">
<mat-label>Amount:</mat-label>
<input name="amount" formControlName="amount" type="number" min="1" step="1" matInput placeholder="Enter the amount.">
</mat-form-field>
</form>
顺便说一下,我正在使用Angular Material进行工作。
你也可以使用这个ng-pattern="/^(0|\-?[1-9][0-9]*)$/"
。
<input type="number" step="1" min="0">
这里有另一个选项,对我来说非常有效。它不允许用户输入非整数值,但如果无效,则拦截键盘输入并防止字符被键入。
<input type="number" min="0" oninput="validity.valid||(value='');" maxlength="3" placeholder="Quantity"/>