Ich möchte nur positive Werte erhalten. Gibt es eine Möglichkeit, dies zu verhindern, indem ich nur html
Bitte schlagen Sie keine Validierungsmethode vor
Antworten
Zu viele Anzeigen?
ykay says Reinstate Monica
Punkte
3888
Chris H.
Punkte
117
Die Antwort von @Manwal ist gut, aber ich mag Code mit weniger Codezeilen für eine bessere Lesbarkeit. Auch ich mag die Verwendung von onclick/onkeypress in html statt.
Meine vorgeschlagene Lösung tut dasselbe: hinzufügen.
min="0" onkeypress="return isNumberKey(event)"
in die html-Eingabe und
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : event.keyCode;
return !(charCode > 31 && (charCode < 48 || charCode > 57));
}
als Javascript-Funktion.
Wie gesagt, es tut dasselbe. Es ist nur persönliche Vorliebe auf, wie das Problem zu lösen.
Drunken Daddy
Punkte
6359
Hier ist eine Angular-2-Lösung:
eine Klasse OnlyNumber erstellen
import {Directive, ElementRef, HostListener} from '@angular/core';
@Directive({
selector: '[OnlyNumber]'
})
export class OnlyNumber {
// Allow decimal numbers. The \. is only allowed once to occur
private regex: RegExp = new RegExp(/^[0-9]+(\.[0-9]*){0,1}$/g);
// Allow key codes for special events. Reflect :
// Backspace, tab, end, home
private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home'];
constructor(private el: ElementRef) {
}
@HostListener('keydown', ['$event'])
onKeyDown(event: KeyboardEvent) {
// Allow Backspace, tab, end, and home keys
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}
// Do not use event.keycode this is deprecated.
// See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
let current: string = this.el.nativeElement.value;
// We need this because the current value on the DOM element
// is not yet updated with the value from this event
let next: string = current.concat(event.key);
if (next && !String(next).match(this.regex)) {
event.preventDefault();
}
}
}
Fügen Sie OnlyNumber zu den Deklarationen in app.module.ts hinzu und verwenden Sie es wie folgt überall in Ihrer Anwendung
<input OnlyNumber="true">
Hafenkranich
Punkte
1653
Asanka Sampath
Punkte
457