버튼을 길게 누르려면 자바스크립트 코드가 필요합니다.

StackOverflow https://stackoverflow.com/questions/79816

  •  09-06-2019
  •  | 
  •  

문제

버튼에 마우스 다운이 발생하면 먼저 마우스 클릭처럼 반응하고 사용자가 버튼을 계속 누르고 있으면 마치 사용자가 계속해서 마우스 클릭을 보내는 것처럼 반응하고 잠시 후 누르고 있는 버튼은 마치 사용자가 마우스 클릭을 가속화하는 것처럼 작동합니다. 기본적으로 시간에 따라 가속을 사용하여 키 누르기를 반복하는 것과 같다고 생각하세요.
즉.사용자가 마우스 버튼을 누르고 있습니다(x=호출 기능) - x___x___x___x__x__x_x_x_x_xxxxxxx

도움이 되었습니까?

해결책

function holdit(btn, action, start, speedup) {
    var t;

    var repeat = function () {
        action();
        t = setTimeout(repeat, start);
        start = start / speedup;
    }

    btn.mousedown = function() {
        repeat();
    }

    btn.mouseup = function () {
        clearTimeout(t);
    }
};

/* to use */
holdit(btn, function () { }, 1000, 2); /* x..1000ms..x..500ms..x..250ms..x */

다른 팁

버튼을 누르면 전화가 옵니다 window.setTimeout 원하는 시간과 기능으로 x, 그리고 시간이 끝나면 타이머를 다시 설정하세요. x 하지만 이번에는 간격이 더 짧습니다.

다음을 사용하여 시간 초과를 지웁니다. window.clearTimeout 마우스 버튼을 놓았을 때.

OnMouseDown에 아래의 토글On을 넣고 버튼의 OnMouseUp에 토글Off를 넣기만 하면 됩니다.

var tid = 0;
var speed = 100;

function toggleOn(){
    if(tid==0){
        tid=setInterval('ThingToDo()',speed);
    }
}
function toggleOff(){
    if(tid!=0){
        clearInterval(tid);
        tid=0;
    }
}
function ThingToDo{

}

아래 의사 코드와 같은 것이 작동할 수 있습니다.

var isClicked = false;
var clickCounter = 100;
function fnTrackClick(){
   if(isClicked){
      clickCounter--;
      setTimeout(clickCounter * 100, fnTrackClick);
   }
}

<input type="button" value="blah" onmousedown="isClicked=true;" onmouseover="fnTrackClick();" onmouseup="isClicked = false;" />

방금 jQuery 플러그인을 출시했습니다. 이것을 확인하세요 데모 이에 레포.

$('button').clickAndHold(function (e, n) {
    console.log("Call me baby ", n);
});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top