如何使用angularjs捕获突出显示/选定的文本?

时间:2017-03-06 09:34:08

标签: javascript html css angularjs angularjs-directive

我希望能够使用AngularJS从输入字段捕获文本/字符串的突出显示部分。我不确定从哪里开始解决这个问题。

例如,我有一个textarea:

<textarea ng-model="input" placeholder="type your input">

如何使用他/她的鼠标指针捕获用户突出显示或选择的文本部分?

2 个答案:

答案 0 :(得分:2)

您可以创建一个附加到textarea的指令,并为当前突出显示的文本输入元素事件和监视器。像

这样的东西

Uncaught TypeError: b.set is not a function
var app = angular.module('module', []);

app.controller('MainCtrl', function($scope) {
  $scope.selectedText = '';
  $scope.textSelected = function(text){
    $scope.selectedText = text;
    $scope.$apply();
    //alert(text);
  };
});

app.directive('inputFieldSelection', function(){
  return{
    restrict: 'A',
    scope:{
      onSelected: '='
    },
      link:function(scope, elem, attrs){
        elem.on('select', function(){ 
         var text = elem.val().substring(elem.prop('selectionStart'), 
              elem.prop('selectionEnd'));
          scope.onSelected(text); 
        });
        
        elem.on('blur', function(){ scope.onSelected('') });
        elem.on('keydown', function(){ scope.onSelected('')});
        elem.on('mousedown', function(){ scope.onSelected('')  });
      }
    }
  });

答案 1 :(得分:0)

&#13;
&#13;
angular.element('[ng-model="YOUR_MODEL_NAME_HERE"]').prop('selectionStart');
angular.element('[ng-model="YOUR_MODEL_NAME_HERE"]').prop('selectionEnd');
&#13;
&#13;
&#13;

您可以使用&#39; selectionStart&#39;和&#39; selectionEnd&#39;获得选择范围。希望这有帮助