HTML
<div id="backspace" ng-click="deleteString(''); decrementCursor();">
JS
<script>
$scope.deleteString = function() {
if($scope.cursorPosVal > 0){
//$scope.name = $scope.name - letter;
$scope.name = [$scope.name.slice(0, $scope.cursorPosVal - 1) + $scope.name.slice($scope.cursorPosVal)].join('');
console.log($scope.name);
setTimeout(function(){ setCaretPosition("inputBox", $scope.cursorPosVal); }, 30);
} else {
$scope.cursorPosVal = 1;
}
};
</script>
我正在设计一个屏幕触摸屏键盘。这是我的退格键。我将这样做,以便当您单击并按住退格按钮时,它会自动开始删除字符。我不知道从哪里开始创建setInterval,我知道setInterval正是我需要在这里使用的。
答案 0 :(得分:3)
如果我没有错,你想要按住按钮时,一个功能会重复。
你正确使用setInterval()。但是,您管理事件的方式是错误的。
看看这个小提琴(这不是你的代码,但一个简单的例子是最好的理解方式):
http://jsfiddle.net/daq9atdd/1/
$(function(){
var interval = null;
$('#myButton').mousedown(function(){
interval = setInterval(function(){
console.log('Hello !');
}, 250);
});
$('#myButton').mouseup(function(){
clearInterval(interval);
});
});
我按下按钮时启动间隔,存储它,并在释放按钮时将其清除。
答案 1 :(得分:2)
您对setInterval
非常肯定。
如果浏览器由于某种原因(例如某些后台任务)暂时挂起,setInterval
将继续排队退格调用,直到它有一些CPU时间。这意味着用户可能看不到任何更改并保留退格时间超过需要的时间,然后看到当浏览器恢复正常时,一大堆字符突然消失。
因此,通过在每次通话后设置超时,您确保用户不会删除超出需要的字符数。如果目标是改善用户体验,那么可能很重要。
Example implementation with AngularJS directives and setTimeout
另见: