Javascript 避免在按下向右箭头时突出显示下一个字母
我有一个带有按键事件的textarea,当我在textarea中键入并将光标放在中间并向右移动箭头时,它会高亮显示下一个字母,有没有可能不高亮显示下一个字母?对于左箭头,它工作正常,不会突出显示字母。先谢谢你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
<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;
}
}
当左箭头到达字母开头时,有没有办法使其停止?如中所示停止?我不明白你的意思。你能详细解释一下“停止”是什么意思吗?我的意思是,当你把光标放在字母的开头,按下向左箭头,它就指向字母的末尾,你知道我按下向左箭头时,我可以把光标放在什么地方吗?谢谢,您的意思是,如果输入了多个单词,然后按左箭头,它将转到上一个单词的末尾。你想让它从头开始?如果我错了,请纠正我是的,如果光标位于第一个字母的开头,我只希望光标停留在开头。如果您按下左箭头键。当左箭头到达字母开头时,是否有办法停止?如中所示停止?我不明白你的意思。你能详细说明一下“停止”是什么意思吗?我的意思是当你把光标放在开头并按下按钮时