2016-12-30 14 views
0

私は入力テキストフィールドを持っています。 <input type="text" [ngModel]="textvalue | currencyinrhello" (ngModelChange)="onTextChange($event)" (keypress)="restrictNumeric($event)" /> 私は入力の値を15,000から5,00,000に制限します。私は、ユーザーがそれ以上の数字を入力しないようにします。入力テキストのangular2の範囲を制限する方法は?

+0

KeyPressイベントを使用するための任意の理由は? – MMK

答えて

1

HTML5ネイティブを使用できます。あなたは角度2のコードは必要ありません。フォームの検証にのみ使用します。範囲内にない数字や無効な文字を入力すると、フォームは無効になります。 angular2ように

<input type="number" name="quantity" min="15000" max="5000000">

1

、あなたはディレクティブを使用することができます。その後、

@Directive({ 
    selector: '[restrict]', 
}) 
export class InputRestricter{ 


@Input('restrict_minvalue') minValue: number; 
constructor(private el: ElementRef,private renderer: Renderer) { 

}  
@HostListener('keyup',['$event']) onKeyUp(event){ 
    if(this.minValue){ 
     let el = <HTMLSelectElement> event.target; 
     if ($(el).val() <= this.minValue) { 
      el.setCustomValidity('Value is invalid'); 
     } else { 
      el.setCustomValidity(''); 
     } 
    } 
} 

と入力値があなたが同じように最大値の能力を実装することができ、15000未満の場合ディレクティブは、あなたの入力は無効になります

<input restrict [restrict_minvalue]="15000"/> 

テンプレートにディレクティブを使用しています。

+0

実行時に、数値を上に置いてもデータが自動的に500000に変更されるようにします。質問を完了しないと申し訳ありません。 –

+0

@VishalNair次に、値を無効にするのではなく、値$(el).val( "15000")を設定するだけです。あなたが入力要素を持っているディレクティブでは、あなたはそれを管理することができます。 – omeralper

0

はこのような何かをしようと、私が使用しているからkeyupイベント

import {Component, Input} from 'angular2/core'; 
@Component({ 
    selector: 'app', 
    template: ` 
    <label>Enter the Amount:</label> 
    <input type="text" #textbox [(ngModel)]="textvalue" (keyup)="restrictNumeric($event, textbox.value, 15000, 500000)" /> 
    ` 
}) 
export class App { 
    string: textvalue; 
    restrictNumeric(event, value, min, max) 
    { 
    if(parseInt(value) < min || isNaN(parseInt(value))) 
     console.log("invalid min value"); 
    else if(parseInt(value) > max || isNaN(parseInt(value)) 
     this.textvalue = 500000; 
    } 
} 
関連する問題