2016-03-19 5 views
1

Ich versuche, den partiellen Text in Eingabe als schreibgeschützt zu machen, um zu erreichen, dass ich diesen Code gefunden habe, aber es funktioniert nicht in FIrefox, funktioniert gut in Chrom.event.preventdefault funktioniert nicht in Firefox

Gefunden, dass event.preventDefault das Problem verursacht. Versuchte Rückkehr falsch, das funktioniert auch nicht.

Angular JS Richtlinie Code

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-Code

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

Es ist ein langer Schuss - Versuchen Sie, die Warnung mit den prevent –

+3

Schalen nicht wachsam zu debuggen verwenden ... – epascarello

+0

Es könnte sein, dass das Problem nicht auf prevent ist. Es könnte auf "event.which" sein. Siehe hierzu [link] (http://stackoverflow.com/questions/18177818/why-jquerys-event-which-gives-difference-results-in-firefox-and-chrome) –

Antwort

1

Wie @epascarello und @Alon Alarm nicht für stattdessen Konsolenprotokolle verwenden Debuggen verwenden, Warnung von Ihrem Skript entfernen könnte Hilfe.

Hoffnung ich half