什么是移动我的光标位置?

时间:2017-05-03 00:55:37

标签: javascript angularjs

我的代码在文本输入框中将字符串插入另一个字符串的中间。我想把光标放在我刚刚插入的字符串的末尾。放置后我可以看到光标位置是正确的。但是,当页面完成渲染时,光标位于输入框的末尾。

在我放置它之后,我猜其他东西正在触摸数据。我不熟悉代码库。有关如何跟踪此问题的任何指示?是否有选择更改事件?

我借用代码从这里进行定位: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>

1 个答案:

答案 0 :(得分:0)

如果有人碰到这个。我假设在我将光标放在我想要的位置之后,此页面上的观察者正在重新渲染输入。我决定将光标放在页面渲染之后,而不是试图找出正在做的事情并改变观察者的顺序,这可能是脆弱的。搜索周围,在页面渲染后执行某些操作的解决方案是使用超时值为0的超时(对我来说似乎是一个巨大的黑客攻击)。所以,如下所示:

$timeout(function () {
              $scope.setCaretToPos("markup", $scope.caretPos) },
         0);

您需要在控制器中注入$ timeout。类似的东西:

ctrl.$inject = ['$scope', '$timeout'];
var ctrl = function ($scope, $timeout)