내 문제는 여기에 내가 호출 된 후 기간 (예 : 5 초 후)에 대한 자바 스크립트 함수를 호출하는 피하기 싶습니다.자바 스크립트 여러 호출을 피하기
저는 자바 스크립트 함수를 호출하는 링크를 만들었습니다. 사용자가 두 번 클릭하면 두 번 호출됩니다. 나는 그것을 피하고 싶습니다.
덕분에, 데반
내 문제는 여기에 내가 호출 된 후 기간 (예 : 5 초 후)에 대한 자바 스크립트 함수를 호출하는 피하기 싶습니다.자바 스크립트 여러 호출을 피하기
저는 자바 스크립트 함수를 호출하는 링크를 만들었습니다. 사용자가 두 번 클릭하면 두 번 호출됩니다. 나는 그것을 피하고 싶습니다.
덕분에, 데반
나는 그것을 처리 할 수있는 가장 합리적인 방법은 그것을 클릭하면 링크를 비활성화하는 것입니다 생각하고 함수 실행이 완료되면 다시 활성화. 당신이 정말로 함수가 호출 된 후 일정 시간을 기다릴 필요가 있다면 ... 뭔가처럼, 당신이 jQuery를 사용할 수 있습니다
$('#button').click(function() {
$(this).attr("disabled", "true");
doTheFunction();
$(this).attr("disabled", "false");
});
가정, 당신은 버튼을 다시 활성화의 setTimeout을 사용할 수 있습니다.
$('#button').click(function() {
$(this).attr("disabled", "true");
doTheFunction();
var btn = $(this);
setTimeout(function() {
btn.attr("disabled", "false");
}, 5000); // reenable the button 5 seconds later
});
편집 : 링크는
(아래 코멘트), 나는 당신이 옳은 것 때문에, 무효 인 속성이 없습니다 추가 및 클래스를 제거하여 위의 시뮬레이션 것입니다. 이 전화를 완료 한 후
$('#link').click(function() {
if ($(this).hasClass('disabled_link')) {
return;
}
$(this).addClass("disabled_link");
doTheFunction();
var link = $(this);
setTimeout(function() {
link.removeClass("disabled_link");
}, 5000); // reenable the button 5 seconds later
});
당신은 링크가 아닌 버튼을 사용하고 있기 때문에, 그리고 jQuery를가 (분명히), 여기에 5 초 동안 아무것도 기능을 중지하는 방법 (또는 무엇이든 당신이 원하는 지연) 뭔가 :
가var someFn = (function() {
var lastCalled;
return function() {
var now = new Date();
var limit = 5000; // minimum milliseconds between calls
if (!lastCalled || (now - lastCalled) > limit) {
lastCalled = now;
// do stuff
alert('hey');
} else {
return;
}
}
}());
클라이언트 스크립트는 특히 신뢰할 수 없습니다 때문에 것은 이런 종류는 일반적으로, 비록 서버에서 처리됩니다 - 당신이 dealy 가 구현 될 것이라는 점을 보장 할 수는 상관없이 전략은 사용하지 .
나는 함수 호출에 태그를 사용하고 있습니다. 그리고 나는 태그에 disable 속성이 없다고 생각합니다. 틀 렸으면 고쳐줘. – Devan
@Devan; 내 답변 편집, 도움이 되길 바랍니다! – goggin13