本文介绍了坐落于输入与AngularJS插入位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要改变输入,其中添加的数字给定数量()。
I need to change the caret position of an input, where a given number of digits is added (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?
我需要的,例如:
输入:1234
所以插入位置将是2。
新的数字:9
最后:12934
先谢谢了。
推荐答案
我觉得这样那样的东西要在指令更好。例如:
I think that such kind of things look better in directives. For example:
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
功能跨浏览器的定位光标从这个答案。
I used setCaretPosition
function for cross browser cursor positioning from this answer.
这篇关于坐落于输入与AngularJS插入位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!