javascript - 使用 AngularJS 在输入中设置插入符位置

标签 javascript angularjs angularjs-scope

我需要更改输入的插入符号位置,其中添加了给定数量的数字 ( 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', function(newValue, 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 - 使用 AngularJS 在输入中设置插入符位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22574295/

相关文章:

javascript - 在 AngularJS 中深入 $watch 一个集合

css - 提交表单状态阻止

javascript - 如何处理javascript中的点击事件?

javascript - 隐藏div与关闭按钮jquery仅与关联的div

javascript - 获取网站之前或主页

javascript - 检测到 UI Grid v3.1.0 列自动宽度问题

javascript - 如何从json键值中删除下划线

javascript - 谷歌地图API自动完成显示位置的 map 预览

javascript - 当我调用它时,angular 的 $rootScope.$on() 方法没有被触发。为什么?

javascript - 我更改了代码,但它没有显示倒计时秒数,为什么?