2016-12-10 18 views
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; 
    } 
    } 
} 

答えて

0

おそらく、JavaScriptののparseFloat()function

parseFloat('123') 
123 
parseFloat('1.23') 
1.23 
parseFloat('-1.23') 
-1.23 
parseFloat('abc') 
NaN 
parseFloat('0002') 
2 
parseFloat('000123') 
123 
+0

こんにちはクリストファーを探しています。お返事をありがとうございます。テキストボックスに「1000」と入力した場合は、「2000」に変更します。だから私は '1'を選択し、 '2000'として値を作るために '2'を入力して後でそれを削除します。 '1'が削除される前に、parseFloat()はテキストボックス内の残りの '000'を解析し、私に '0'を返します。だから私は再び2000年全体を入力する必要があります。これに関するご提案 –

+0

ユーザー入力を「有効な」置き換えで置き換えるのはベストプラクティスではありません。代わりに、ユーザーの入力をそのままにして、入力ボックスの近くに無効な入力を示すエラーメッセージを表示します –

関連する問題