Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 避免在按下向右箭头时突出显示下一个字母_Javascript_Angularjs - Fatal编程技术网

Javascript 避免在按下向右箭头时突出显示下一个字母

Javascript 避免在按下向右箭头时突出显示下一个字母,javascript,angularjs,Javascript,Angularjs,我有一个带有按键事件的textarea,当我在textarea中键入并将光标放在中间并向右移动箭头时,它会高亮显示下一个字母,有没有可能不高亮显示下一个字母?对于左箭头,它工作正常,不会突出显示字母。先谢谢你 <div ng-app="myApp"> <div class="container" ng-controller="Ctrl_List"> <div class="row"> <textarea name="text" id="text

我有一个带有按键事件的textarea,当我在textarea中键入并将光标放在中间并向右移动箭头时,它会高亮显示下一个字母,有没有可能不高亮显示下一个字母?对于左箭头,它工作正常,不会突出显示字母。先谢谢你

<div ng-app="myApp">
<div class="container" ng-controller="Ctrl_List">
  <div class="row">
   <textarea name="text" id="text" cols="30" rows="10" ng-keydown="keyPress();"></textarea>
</div>
</div>
angular.module('myApp', [])
.controller("Ctrl_List", ["$scope", function(scope) {
  scope.keyPress = function(){
     var code = event.which;
       if (code == 37) {
            event.preventDefault();
            document.activeElement.selectionStart--;
            document.activeElement.selectionEnd--;
        }
        if (code == 39) {
            event.preventDefault();
            document.activeElement.selectionStart++;
            document.activeElement.selectionEnd++;
        }
  }
}]);

angular.module('myApp',[])
.controller(“Ctrl_列表”、[“$scope”、函数(scope){
scope.keyPress=函数(){
var代码=event.which;
如果(代码==37){
event.preventDefault();
document.activeElement.selectionStart--;
document.activeElement.selectionEnd--;
}
如果(代码==39){
event.preventDefault();
document.activeElement.selectionStart++;
document.activeElement.selectionEnd++;
}
}
}]);

在您的代码中,当按下左箭头键时,您正在递减
选择开始
选择结束
这两个属性。当你把光标放在字符串的中间时,两个代码>选择开始> /代码>和<代码>选择结束<代码>将是相等的,即在光标之前有字符的位置。 因此,让我们假设
selectionStart=4
selectionEnd=4
因此,当您减小
selectionStart
时,它将变为
3
,然后减小
selectionEnd
时,它也将变为
3
,因此它们都指向相同的位置,因此没有选择。但在右箭头中,按其工作原理有点不同,当您增加
selectionStart
时,它将变为
5
,并且它将增加
selectionEnd
的值,因为
selectionEnd
不能小于
selectionStart
(因为结束不能晚于开始)因此,
selectionEnd
变为
5
,然后递增
selectionEnd
将变为
6
,因此现在您有了
selectionStart=5
selectionEnd=6
。因此,您有一个角色是根据这一点选择的,因此行为

因此,为了实现您想要的,您只需注释掉
document.activeElement.selectionEnd++右箭头按处理程序中的代码行。Belwo是一个演示

angular.module('myApp',[])
.controller(“Ctrl_列表”、[“$scope”、函数(scope){
scope.keyPress=函数(){
var代码=event.which;
如果(代码==37){
event.preventDefault();
document.activeElement.selectionStart--;
document.activeElement.selectionEnd--;
}
如果(代码==39){
event.preventDefault();
document.activeElement.selectionStart++;
//document.activeElement.selectionEnd++;
}
}
}]);

在您的代码中,当按下左箭头键时,您正在递减
选择开始
选择结束
这两个属性。当你把光标放在字符串的中间时,两个代码>选择开始> /代码>和<代码>选择结束<代码>将是相等的,即在光标之前有字符的位置。 因此,让我们假设
selectionStart=4
selectionEnd=4
因此,当您减小
selectionStart
时,它将变为
3
,然后减小
selectionEnd
时,它也将变为
3
,因此它们都指向相同的位置,因此没有选择。但在右箭头中,按其工作原理有点不同,当您增加
selectionStart
时,它将变为
5
,并且它将增加
selectionEnd
的值,因为
selectionEnd
不能小于
selectionStart
(因为结束不能晚于开始)因此,
selectionEnd
变为
5
,然后递增
selectionEnd
将变为
6
,因此现在您有了
selectionStart=5
selectionEnd=6
。因此,您有一个角色是根据这一点选择的,因此行为

因此,为了实现您想要的,您只需注释掉
document.activeElement.selectionEnd++右箭头按处理程序中的代码行。Belwo是一个演示

angular.module('myApp',[])
.controller(“Ctrl_列表”、[“$scope”、函数(scope){
scope.keyPress=函数(){
var代码=event.which;
如果(代码==37){
event.preventDefault();
document.activeElement.selectionStart--;
document.activeElement.selectionEnd--;
}
如果(代码==39){
event.preventDefault();
document.activeElement.selectionStart++;
//document.activeElement.selectionEnd++;
}
}
}]);

对于我在评论中提出的后续问题,我设法做到了这一点

if (code == 37) {
            document.activeElement.selectionEnd--;
              var test = false;
             if(test == false){
            //  document.activeElement.selectionStart--;
              document.activeElement.selectionEnd--;
              if(document.activeElement.selectionStart == 0){
                 test = true;

                 document.activeElement.selectionEnd = 0;
                 document.activeElement.selectionStart = 0;
              }
        }

对于我在评论中的后续问题,我成功地做到了这一点

if (code == 37) {
            document.activeElement.selectionEnd--;
              var test = false;
             if(test == false){
            //  document.activeElement.selectionStart--;
              document.activeElement.selectionEnd--;
              if(document.activeElement.selectionStart == 0){
                 test = true;

                 document.activeElement.selectionEnd = 0;
                 document.activeElement.selectionStart = 0;
              }
        }

当左箭头到达字母开头时,有没有办法使其停止?如中所示停止?我不明白你的意思。你能详细解释一下“停止”是什么意思吗?我的意思是,当你把光标放在字母的开头,按下向左箭头,它就指向字母的末尾,你知道我按下向左箭头时,我可以把光标放在什么地方吗?谢谢,您的意思是,如果输入了多个单词,然后按左箭头,它将转到上一个单词的末尾。你想让它从头开始?如果我错了,请纠正我是的,如果光标位于第一个字母的开头,我只希望光标停留在开头。如果您按下左箭头键。当左箭头到达字母开头时,是否有办法停止?如中所示停止?我不明白你的意思。你能详细说明一下“停止”是什么意思吗?我的意思是当你把光标放在开头并按下按钮时