0
'text'タイプの入力テキストボックスを検証して、負数または10進値の数値または数値のみを許可しようとしています。 例:100,002、-3.4、-6、8.5 現在、このコードは ' - 'または '。'を検証していません。数字、負の符号と10進値のみを許可する入力テキストボックスを検証する命令
import { Directive, ElementRef, HostListener, Input } from '@angular/core';
@Directive({
selector: '[myValidate]'
})
export class HighlightDirective {
constructor(private el: ElementRef) { }
@Input('myValidate') highlightColor: string;
@HostListener('keyup', ['$event']) onKeyDown(event) {
let oldValue = event.target.value;
let keyPressed = event.key;
let keyCode = event.keyCode;
if (isNaN(oldValue.substr(oldValue.length - 1)) || keyCode === 32) {
this.el.nativeElement.value = oldValue.substr(0, oldValue.length - 1);
} else {
return null;
}
}
}
こんにちはクリストファーを探しています。お返事をありがとうございます。テキストボックスに「1000」と入力した場合は、「2000」に変更します。だから私は '1'を選択し、 '2000'として値を作るために '2'を入力して後でそれを削除します。 '1'が削除される前に、parseFloat()はテキストボックス内の残りの '000'を解析し、私に '0'を返します。だから私は再び2000年全体を入力する必要があります。これに関するご提案 –
ユーザー入力を「有効な」置き換えで置き換えるのはベストプラクティスではありません。代わりに、ユーザーの入力をそのままにして、入力ボックスの近くに無効な入力を示すエラーメッセージを表示します –