Auto input focusing not working in iOS (works in android) with Cordova

I am building an app with Cordova, for both of iOS and Android.

I have a page where I have 3 inputs, each input, will take 1 digit to make a code.

Something like: 123

So in the first input you would type '1', it would jump to the next input and focus on it, so you could type the '2'. This behaviour works fine in Android! Same code doesn't seem to work for iOS though. I have the following html:

<form class="matrixZone">
    <div class="CardList optionMenu fullRowInput">
        <input class="mb20" type="tel"  id="new_auth1" move-next-input ng-model="operation.authorizationCodeConfirm[0]" ng-click="newCodeAutorizationfocus(1)" ng-change="changeFocus(2)"  maxlength="1"   style="-webkit-text-security: disc; text-security: disc;">
        <input class="mb20" type="tel"  id="new_auth2"   move-next-input  ng-model="operation.authorizationCodeConfirm[1]" ng-click="newCodeAutorizationfocus(2)"  ng-change="changeFocus(3)"  maxlength="1"   style="-webkit-text-security: disc; text-security: disc;">
        <input class="mb20" type="tel"  id="new_auth3"   move-next-input  ng-model="operation.authorizationCodeConfirm[2]" ng-click="newCodeAutorizationfocus(3)"  ng-change="changeFocus(4)"  maxlength="1"   style="-webkit-text-security: disc; text-security: disc;">

For the directive move-next-input I have:

function moveNextInput() {
    return {
        restrict: 'A',
        link: function ($scope, element) {
            element.on("input", function (e) {

                if (element.val().length == element.attr("maxlength")) {
                    var $nextElement =;
                    if ($nextElement.length) {
            }).keyup(function (e) {
                if (e.which === 8 && !this.value) {


And I have the following functions as well (on the controller):

$scope.changeFocus = function (n) {
    if (n === 0) {
        var id = "new_auth3";
        var element = $window.document.getElementById(id);
        if (element) {
            if (isNaN($scope.operation.authorizationCodeConfirm[2]) || $scope.operation.authorizationCodeConfirm[2] == "")
            $scope.oldMCCStr = getMCC($scope.operation.authorizationCodeConfirm);
            console.log("esta a ser chamado!");

// checks if the key pressed is a number
var checkInput = function (inputArr) {
    angular.forEach(inputArr, function (value, key) {
        if (null !== inputArr[key]) {
            var compare = parseInt(inputArr[key]);

            if (isNaN(compare)) {
                inputArr[key] = '';

$scope.$watch('operation.authorizationCodeConfirm', function (newValue, oldValue) {
    console.log("esta a ser chamado!");
}, true);