我的代码在文本输入框中将字符串插入另一个字符串的中间。我想把光标放在我刚刚插入的字符串的末尾。放置后我可以看到光标位置是正确的。但是,当页面完成渲染时,光标位于输入框的末尾。
在我放置它之后,我猜其他东西正在触摸数据。我不熟悉代码库。有关如何跟踪此问题的任何指示?是否有选择更改事件?
我借用代码从这里进行定位:Set Cursor Position in Textarea using AngularJS
这是我的代码:
<div id="dialoguebuttons">
<div style="left: 60px; color: rgb(0, 102, 153); padding-top: 5px; font-size: 16px; font-weight: bold; float: left; position: relative;" id="dialog_question">Activate Riskfirst Rapid?</div>
<a id="dialogYesButton" class="button btn-orng" tabIndex="101" href="#">
<span class="btn-inner">Yes</span>
</a>
<a id="dialogNoButton" class="button btn-orng" tabIndex="102" href="#">
<span class="btn-inner">No</span>
</a>
</div>
</div>
答案 0 :(得分:0)
如果有人碰到这个。我假设在我将光标放在我想要的位置之后,此页面上的观察者正在重新渲染输入。我决定将光标放在页面渲染之后,而不是试图找出正在做的事情并改变观察者的顺序,这可能是脆弱的。搜索周围,在页面渲染后执行某些操作的解决方案是使用超时值为0的超时(对我来说似乎是一个巨大的黑客攻击)。所以,如下所示:
$timeout(function () {
$scope.setCaretToPos("markup", $scope.caretPos) },
0);
您需要在控制器中注入$ timeout。类似的东西:
ctrl.$inject = ['$scope', '$timeout'];
var ctrl = function ($scope, $timeout)