2017-01-27 3 views
1

selectboxからオプションを選択した後、入力タイプのテキストに焦点を合わせようとしています。オプションを選択すると、ナノ秒の入力がフォーカスされ、選択ボックスに再びフォーカスが当てられます。AngularJSのselectboxからオプションを選択した後に入力テキストに焦点を合わせる

ここにはfiddleがあります。ここで

は、私たちが代わりに選択基準を使用している場合、それがうまく働いているので、これは、おそらくangular-materialバグでコード

それはコメントで述べていますとおり
<div ng-controller="MyCtrl" layout layout-align="center center"> 
     <md-select ng-model="myModel" placeholder="Pick" ng-change="onChange()" md-on-open="onOpen()"> 
      <md-option value="0">Zero</md-option> 
      <md-option value="1">One</md-option> 
     </md-select> 

     <input type="text" id="fc"> 
    </div> 
<script> 
    angular.module('MyApp', ['ngMaterial']) 
    .controller('MyCtrl', function ($scope) { 
     $scope.onChange = function() { 
      document.getElementById('fc').focus(); 
     }; 

     $scope.onOpen = function() { 
      document.getElementById('fc').focus(); 
     }; 
    }) 
</script> 
+1

お役に立てば幸いです...でも、私はそれを引き起こしているかわからないんだけど。あなたが標準のHTMLを使用する場合、それはうまく動作します。私はこれがmd-selectで動作することに気付きましたが、$ scopeを使うのは偉大な習慣ではありません。 '$スコープ$時計。( 'mymodelという'、関数(){ \t $文献[0] .getElementById( 'FCは'))(フォーカス; });' – sledsworth

+0

@sledsworthはいその角度材料。角度のある素材でこれを達成しようとしています。 $ watchの問題は何ですか? – user3288891

+0

言うまでもなく、問題はありませんが、Angular 1.5のリリースでは、とにかく、$ watchを使用する代わりに、コンポーネントライフサイクルフックを使用することをお勧めします。 – sledsworth

答えて

1

です。手動入力に集中するAtttachディレクティブを($timeoutで)ときの選択:バグが修正されるまで、あなたがそれを解決するためにuggly回避策を作ることができる、と述べた(私はgithub issueが作成されるべきだと思う)

変更されます。

:タイムアウトに注意してください。それは(それが250ミリ秒で動作します)...かなりの時間にする必要がある:

.directive('focus', function($timeout) { 
    return function(scope, elem, attr) { 
     scope.$on(attr.focus, function(e) { 
     $timeout(function() {   
      elem[0].focus();   
     }, 250); 
     }); 
    }; 
}) 

コントローラー:選択が変更されたときに、イベントをブロードキャストします。

$scope.onChange = function() { 
    $scope.$broadcast('selectChanged'); 
}; 

ビュー:あなたのinput要素にフォーカスディレクティブを取り付けます

<input type="text" id="fc" focus="selectChanged"> 

私はあなたのjdsfiddleをフォークしてきました。 Hereあなたはそれが動作することがわかります。

が、それは角度の材料ドロップダウンに関連すると思わ

+0

私はそれを試しました。動いていない。あなたは正しい、そのバグの問題。 – user3288891

+0

はい、バグですが、回避策を試しましたか? – troig

+0

はい更新したフィドルをチェックすると、まったく動作していません。 – user3288891

関連する問題