2016-12-29 9 views
6

は以前、私は次のようにjQueryを使用して問題に対処:ユーザーがテキストボックスにスペースを発生させないようにする適切な方法は何ですかAngular2?

$("#textInput").keydown(function (e) { 
    return e.which !== 32; 
}); 

新しい角度と活字体でそれに近づくだろうか?

+0

[キーから押されたキーを取得する]キーが押されている可能性があります(http://stackoverflow.com/questions/34157705/get-which-key-pressed-from-keypress-angular2) – Habeeb

答えて

8

それとも単にを。

<input type="text" (keydown.space)="$event.preventDefault();"> 


私が今まであなたがそれを与えるキー番号を受け取り、それらに続い

@Directive({ 
    selector : '[prevent-keys]', 
    host : { 
     '(keydown)' : 'onKeyUp($event)' 
    } 
}) 
export class PreventKeyseDirective { 
    @Input('prevent-keys') preventKeys; 
    onKeyUp ($event) { 
     if (this.preventKeys && this.preventKeys.includes($event. keyCode)) { 
      $event.preventDefault(); 
     } 
    } 
} 

そして

<input [prevent-keys]="[32, 37 , 38 , 39 , 40 ]" type="text"> 
のようにそれを使用しないように便利なディレクティブを作成するために管理

これはスペース、上、左、下、右を防ぎますtキー:D

+0

これは '(keydown.space)'の意味ですか? @Miladはいくつかの説明を追加してください –

+2

これは流暢です。 – anonym

+0

@PardeepJain彼はあなたの答えで言及した(キーダウン)イベントを最も適切に使用しました。 – anonym

0

私はそうでなければangular2の様々な方法があるあなたが

$("#textInput").keydown(function (e) { 
    return e.which !== 32; 
}); 

を説明するように、あなたのコード内で$を使用することができますよりも、この

declare var $: any; 

のように私のクラスの上に$をdecalre keyupと​​のようにそれらも使用できます

4

あなたは

<input type="text" (keydown)="keyDownHandler($event)"/> 

次に、あなたのコントローラにkeyDownHandler()機能定義:このようなあなたのテンプレートに結合ULD使用イベント

keyDownHandler(event: Event) { 
    if (event.which === 32) 
     event.preventDefault(); 
} 
+0

型付きところで、テキストボックスにまっすぐに入るので、タイプミスがあるかもしれませんが、あなたがそのアイデアを得ることを願っています。 – Robba

+0

これは正常に動作します。ありがとう。 – anonym

関連する問題