我需要更改输入的插入符号位置,其中添加了给定数量的数字 ( 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/