我需要改变一个输入的插入位置,其中添加了一个给定的位数(
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" />