2016-03-19 11 views
1

私はこのコードを見つけたが、FIrefoxで動作していないことを達成するために、入力フィールドに部分的なテキストを読み取り専用で作成しようとしています。event.preventdefaultがfirefoxで動作していません

event.preventDefaultが問題を引き起こしていることがわかりました。 試してもfalseが返されますが、これも機能しません。

角度JS指令コード

app.directive('partialReadonly', function() { 
    return { 
     restrict: 'A', 
     link: function ($scope, $element, attrs) { 

      $element.on('keypress, keydown', function (event) { 
       var readOnlyLength = attrs["partialReadonly"].length; 

       if ((event.which != 37 && (event.which != 39)) 
         && (($element[0].selectionStart < readOnlyLength) 
           || (($element[0].selectionStart == readOnlyLength) && (event.which == 8)))) { 
        alert('preventdef'); 
        //return false; 
        event.preventDefault(); 
       } 
      }); 

      $scope.load = function() { 
       alert('load called attrs["partialReadonly"] ' + attrs["partialReadonly"]); 
       $scope.temp = attrs["partialReadonly"]; 
       // $element[0].value = attrs["partialReadonly"]; 

      }; 

     } 
    }; 
}); 

HTMLコード

<input type="text" ng-init="load()" ng-model="key" partial-readonly="{{number}}" /> 
+1

を助けた - それは問題がでpreventDefaultではないことかもしれないデバッグにアラートを使用しないでpreventDefault –

+3

でアラートを切り替えてみてください... – epascarello

+0

。それは 'event.which'にあるかもしれません。これを参照してください[リンク](http://stackoverflow.com/questions/18177818/why-jquerys-event-which-gives-different-results-in-firefox-and-chrome) –

答えて

1
@epascarelloとして

と@Alonは、スクリプトからアラートを削除、コンソールログを使用する代わりに、デバッグするためのアラートを使用していないかもしれません助けて。

希望私はそれがロングショットだ

関連する問題