Javascript 使用AngularJs Ng单击在文本区域的当前光标位置插入文本
我们正在努力实现以下要求。 点击一个按钮,将生成一些文本,并将其添加到文本区域。 按钮正在使用Ng Onclick 按钮代码如下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+=中,它将+上一个公式的下一个公式,因此我想修改这个公式,并需要添加保留光
<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="">