javascript – 使用AngularJS在Input中设置插入位置

前端之家收集整理的这篇文章主要介绍了javascript – 使用AngularJS在Input中设置插入位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要改变一个输入的插入位置,其中添加了一个给定的位数( Example).
app.controller('MainCtrl',function($scope,$element,$timeout,$filter) {
  //$scope.val = '12';
  $scope.$watch('val',function(newValue,oldValue) {
    if (!isNaN(newValue)) {
      if (newValue.length > 3) {
        //Set Caret Position  
      }
    }
  });
});

有可能做这样的事情吗example

我需要举个例子:

Input: 1234.

so the caret position will be 2.

New digit: 9

final: 12934

提前致谢.

解决方法

我认为这样的事情在指令中看起来更好.例如:
app.directive('caret',function() {

    function setCaretPosition(elem,caretPos) {
        if (elem !== null) {
            if (elem.createTextRange) {
                var range = elem.createTextRange();
                range.move('character',caretPos);
                range.select();
            } else {
                if (elem.setSelectionRange) {
                    elem.focus();
                    elem.setSelectionRange(caretPos,caretPos);
                } else
                    elem.focus();
            }
        }
    }

    return {
        scope: {value: '=ngModel'},link: function(scope,element,attrs) {
            var caret = Number(attrs.caret);
            scope.$watch('value',oldValue) {
                if (newValue && newValue != oldValue && !isNaN(newValue) && newValue.length > (caret + 1)) {
                    setCaretPosition(element[0],caret);
                }
            });
        }
    };
});

用法

<input ng-model='val' caret="2" />

我使用setCaretPosition函数this的回答浏览器光标定位.

演示:http://plnkr.co/edit/5RSgzvyd8YOTaXPsYr8A?p=preview

猜你在找的JavaScript相关文章