Я создал поле ввода, как показано ниже в Angular2, которое должно принимать только цифры.
HTML
<input type="text" name="streetCode" ngModel [maxlength]="2" (keypress)="onlyNumber($event)">
typescipt
onlyNumber(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
}
Приведенный выше код работает нормально и позволяет вводить только цифры с клавиатуры, но проблема в том, что когда я копирую вставку какого-либо алфавитного символа в поле ввода, он разрешает алфавиты.
Обновление 1:
На самом деле, когда я говорю «копировать вставку», это происходит через копирование мышью, а не через клавиатуру.
Может кто-нибудь, пожалуйста, помогите мне в этом
Обновление 2
Сейчас я изменил код, как показано ниже. Не знаю, правильный ли это подход:
onlyNumber(evt) {
if (evt.type === 'paste') {
let content = evt.clipboardData.getData('Text');
if (isNaN(content)) {
evt.preventDefault();
}
}
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
evt.preventDefault();
}
}
HTML
<input type="text" name="streetCode" ngModel [maxlength]="2" (keypress)="onlyNumber($event)" (paste)="onlyNumber($event)">