Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AngularJs Ng单击在文本区域的当前光标位置插入文本_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 使用AngularJs Ng单击在文本区域的当前光标位置插入文本

Javascript 使用AngularJs Ng单击在文本区域的当前光标位置插入文本,javascript,html,angularjs,Javascript,Html,Angularjs,我们正在努力实现以下要求。 点击一个按钮,将生成一些文本,并将其添加到文本区域。 按钮正在使用Ng Onclick 按钮代码如下 <input type="submit" value="Add to form" class="btn btn-primary" ng-click="addToFormID($index)" /> 我们可以看到,在else部分$scope.vm.SummarisationForm+=中,它将+上一个公式的下一个公式,因此我想修改这个公式,并需要添加保留光

我们正在努力实现以下要求。 点击一个按钮,将生成一些文本,并将其添加到文本区域。 按钮正在使用Ng Onclick

按钮代码如下

<input type="submit" value="Add to form" class="btn btn-primary" ng-click="addToFormID($index)" />
我们可以看到,在else部分$scope.vm.SummarisationForm+=中,它将+上一个公式的下一个公式,因此我想修改这个公式,并需要添加保留光标的内容

现在,我点击它是将其添加到内容的末尾,如果我在下一行的第一行中输入enter键保持光标,它也将其添加到已经存在文本的同一行中,因此我希望找到光标位置并插入到文本中精确保持光标或输入enter键位置的位置

我是angular js的新手,所以请帮助我了解按钮的基本概念,我如何实现和修改脚本,我如何做到

编辑:它是ASP.NET MVC5应用程序

如果你需要更多的细节,请告诉我


提前感谢大家。

这是解决我问题的英雄。他解决了我的问题,真是太好了

我创建了这个链接中提到的指令元素,并在我的视图中调用了那个指令

它起作用了

像这样打电话,

指令名为myText。因此,代码将与此视图类似

 <textarea my-text=""> 


不清楚问题出在哪里。而且如果有textarea html代码也会很好。设置汇总公式的确切含义是什么?嗨,大卫也添加了文本区号,你能检查一下吗?解释是我需要在文本区点击按钮后添加一些文本。插入时,它不是将文本插入光标位置,即输入或保持鼠标指针的位置,而是将文本连续插入到上一个文本,没有任何空格。希望你明白我的意思。setSummarisationForm是另一种将此文本区域文本动态填充到另一个文本框的方法。当您单击按钮时,您的光标不会从文本区域消失吗?您如何在文本区域中跟踪光标位置?您好,David,是的,使用鼠标和按键enter键再次消失,我保持光标并将光标设置到某个位置,但它不使用光标点,而是再次将文本添加到上一个文本旁边,没有任何空格。
    $scope.addToFormID = function(index){
        if( $scope.vm.SummarisationForm==null)
        {
            $scope.vm.SummarisationForm ="["+ $scope.vm.Dependencies[index].NeName+":{"+$scope.vm.Dependencies[index].DbId+","+$scope.vm.Dependencies[index].VersionId+"}]";

        }else
            $scope.vm.Summarisation+="["+ $scope.vm.Dependencies[index].Name+":{"+$scope.vm.Dependencies[index].Id+","+$scope.vm.Dependencies[index].VersionId+"}]";
        $scope.setSummarisationFormDynamic();
    }
app.directive('myText', ['$rootScope', function($rootScope) {
    return {
        link: function(scope, element, attrs) {
            $rootScope.$on('add', function(e, val) {
                var domElement = element[0];

                if (document.selection) {
                    domElement.focus();
                    var sel = document.selection.createRange();
                    sel.text = val;
                    domElement.focus();
                } else if (domElement.selectionStart || domElement.selectionStart === 0) {
                    var startPos = domElement.selectionStart;
                    var endPos = domElement.selectionEnd;
                    var scrollTop = domElement.scrollTop;
                    domElement.value = domElement.value.substring(0, startPos) + val + domElement.value.substring(endPos, domElement.value.length);
                    domElement.focus();
                    domElement.selectionStart = startPos + val.length;
                    domElement.selectionEnd = startPos + val.length;
                    domElement.scrollTop = scrollTop;
                } else {
                    domElement.value += val;
                    domElement.focus();
                }
            });
        }
    }
}]);
 <textarea my-text="">