2016-07-28 11 views
0

ボタンとして3つの入力要素が用意されています。 ng-keyupでは私のコントローラで関数を呼び出す。angle ng-focus/focus入力要素

enter image description here

今の問題は、私は手動でkeyUpイベントが動作するだけにして、フォーカスを得るためにそれらのいずれかをクリックする必要があります。

ng-focus = 'focus'を試した後、コントローラで$ scope.focus = trueを設定しても動作しませんでした。

<div class="row startButtonRow"> 
    <div class="col col-50" align="center"> 
     <button class="button button-dark startButton" ng-click="start()" ng-disabled="disableStart">Start</button> 
    </div> 

    <div class="col" align="center"> 
     <input ng-focus="focus" type="button" class="button button-dark startButton" ng-disabled="disableStop" ng-keyup="stopTimer($event)"> 
    </div> 

    <div class="col" align="center"> 
     <input type="button" class="button button-dark startButton" ng-disabled="disableStop" ng-keyup="stopTimer($event)"> 
    </div> 

    <div class="col" align="center"> 
     <input type="button" class="button button-dark startButton" ng-disabled="disableStop" ng-keyup="stopTimer($event)"> 
    </div> 

    </div> 

私はシンボルが3つの列に表示されて起動スタートボタンをクリックして、私は、対応するボタン(キーアップと、ここで入力要素)を押すことになっていたら、すぐに特定のシンボルが表示されます。最初に要素をクリックしてからキーボードのキーを使うことはできません。

答えて

1

ng-keyupあなたの入力要素のいずれかに移動する必要はありません。あなたのbody要素に移動することもできますし、ng-app要素が何であれ、それでもキー押しをキャッチします。

別の注記では、あなたは何を誤解していると思いますかng-focus入力がフォーカスされているときに指定された式を評価し、ブラウザにその要素のフォーカスを指示していません。あなたがあなたのコントローラにこのような何かを追加することができますHow to set focus on input field?

を参照してください、あなたの入力を集中するカスタムディレクティブを構築したいと思うでしょう:ときに私

var handler = function(e){ 
    if (e.keyCode === 37) { 
     // left arrow 
    } else if (e.keyCode === 38) { 
     // up arrow 
    } else if (e.keyCode === 39) { 
     // right arrow 
    } 
}; 

var $doc = angular.element(document); 

$doc.on('keyup', handler); 
$scope.$on('$destroy',function(){ 
    $doc.off('keyup', handler); 
}) 
+0

私はNG-からkeyupについてのあなたの最初のポイントを取得し、私はそれに気づきました実装されました。マウスのクリックではなくキーボードの<-, ^, ->ボタンで3つのボタンを押すことは可能ですか?私はそれに答えが見つからなかったので、私は入力とngキーアップに行きました。はい、私は間違いを犯しました - フォーカス、おかげで! – Nitish

+0

私の答えに編集を参照してください –

+0

パーフェクト!どうもありがとう! – Nitish

関連する問題