2016-10-04 1 views
0

Приведенный ниже код работает только в том случае, если тип ввода является текстом, и он не работает, когда тип является числом.угловая директива не работает с типом ввода = «номер»

<div ng-app="myApp" ng-controller="myCtrl as model"> 
<input type="text" ng-model="cero" ng-decimal > 
</div> 


angular 
    .module("myApp",[]) 
    .controller('myCtrl', function($scope){ 
     var model=this; 
    }) 
    .directive('ngDecimal', function ($parse) { 
     var linkFunction =function(scope, element, attrs){  
      element.bind("keypress", function(event) { 
       if(event.which === 13) {  
        scope.$apply(function(){ 
         scope.$eval(attrs.format, {'event': event}); 
         if(scope.cero===undefined || scope.cero===''){ 
          scope.cero="0.", 
          event.preventDefault(); 
         }else{ 

         } 
        }); 
       } 
      }); 
     }; 
     return{ 
      restrict : 'A', 
      scope:{ 
       cero: '=ngModel' 
      }, 
      link: linkFunction 
     } 
    }); 

Что мне нужно, это изменить тип на номер и все еще делать код работы. Код также находится на CodePen.

+1

Вы не описали свою проблему или задали вопрос. – Amy

+0

Возможно, вам стоит попробовать с 'scope.cero =" 0 ",' –

+0

Что вы пытаетесь сделать с директивой. Вы можете уточнить свой вопрос? –

ответ

1

Обновлено пера: http://codepen.io/anon/pen/QKOVkP?editors=1011

Работает с числом, ограничение быть вы не можете назначить

scope.cero = "0." // string value 

к a type="number", замените его на минимальный номер, который вы хотите назначить, возможно

scope.cero = parseFloat("0.01") // parseFloat("0.") won't work 
+0

yes perfect, но условие, поэтому я не устранил то, что написал пользователь, но которое больше не работает, вы это знаете? –

+0

обновленный плункер с 'alert()', работающий в обоих направлениях, также проверьте, было ли условие 'scope.cero === null' добавлено к условиям - http://codepen.io/anon/pen/QKOVKP? editors = 1011 – Aks1357

+0

да отлично, спасибо –

1

В другом случае добавьте это.

scope.cero = parseFloat(scope.cero).toFixed(2); 

Преобразовать строку в десятичную

Вот код: working code

+0

спасибо за этот код, но если я изменю ввод на тип номер не работает http://codepen.io/fernandooj/pen/amVaQm?editors=1011 –