>>I tested using both positive and negative priority and your directive always ran first. I *did* get it to work by changing your formatter to:
>> function bind() {
>> return ngModel.$formatters.unshift(function (value) {
>> return format(value);
>> });
>> }
Don't know why the priority approach didn't work but this shows that your formatter needs to be first in the $formatters array.....
>
>There is some activity in the issue I raised
>
>
https://github.com/angular/angular.js/issues/11157#issuecomment-75706528>
>and I also posted a new plnkr
>
>
http://plnkr.co/edit/z1BWMoPmnsCZlAUra0os?p=previewUsing Priority and push gives exactly the same formatter execution order (ie angulars directive followed by yours). Behaviour is the same in both cases.
What exactly is your problem with this code ?
BTW you should probably also add 'event.preventDefault()' in your keydown event handler - simply returning true/false only works in IE.
Also you need to prevent multiple decimal points:
if (isDecimal(event.keyCode)) {
if (event.srcElement.value.indexOf('.') !== -1) {
event.preventDefault();
return false;
}
}
(or use a regex)