当前位置: 首页 > 面试题库 >

使用AngularJS在输入中设置插入位置

姜锋
2023-03-14
问题内容

我需要更改输入的插入符号位置,在该位置添加给定的数字(示例)。

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  
      }
    }
  });
});

是否可以执行类似此示例的操作?

我需要例如:

输入:1234。

因此插入符号的位置将为2。

新数字:9

决赛: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从这个答案中使用了跨浏览器光标定位的功能。

演示:http :

//plnkr.co/edit/5RSgzvyd8YOTaXPsYr8A?p=preview



 类似资料:
  • 问题内容: 如何获取输入中文本插入符号的索引? 问题答案: -> 选择开始

  • 我正在尝试使用用户对web表单的输入创建一个用户名cookie。然而,它不起作用,我不知道为什么。你知道问题出在哪里吗?

  • 我正在尝试做一个游戏,人们不必在输入字段内点击,以便键入,我有输入字段的值是通过键入设置的,除了每键入一个新的字母,它重置输入字段而不是添加值。这是代码:

  • 问题内容: 我希望将我在瞬间生成的默认值绑定到日期和时间输入字段。我尝试了ng-model并将其直接绑定到value属性。但是,这似乎都不起作用。有办法使它起作用吗? 编辑: 另外,如何绑定时间输入字段呢? 这是一个小提琴:http : //jsfiddle.net/chrisyeung/bF9Pq/ 问题答案: 如果您使用的是chrome,则必须将日期格式指定为“ yyyy-MM-dd”。 否则

  • 问题内容: 我目前正在使用YUI小工具。我也有一个Javascript函数来验证YUI为我绘制的输出: 这是我的: 正如您所看到的,我的问题是,如何将值设置为? 问题答案: 试试…为YUI 正常 与JQuery

  • 问题内容: 有人知道如何将文本框中的键盘插入符移动到特定位置吗? 例如,如果一个文本框(例如,输入元素,而不是文本区域)中包含50个字符,而我想将插入号放置在字符20之前,我该如何处理? 这与以下问题有所不同:jQuery在TextArea中设置光标位置,这需要jQuery。 问题答案: 摘自Josh Stodola的使用Javascript在Textbox或TextArea中设置键盘插入符号的位