문제

나는 PHP 기반한 웹 응용 프로그램의 상태를 모니터링 프로세스하고 표시된 페이지가 있는 상태입니다.사용자가 버튼을 클릭 할 수 있습 페이지에서 업데이트 상태입니다.그러나 처리중에 서버가 충분히 무거운 업데이트 상태를 너무 자주하는 것은 바람직하지 않습니다.그래서 내가 원하는 방법을 제한하는 사람 중 하나를 클릭하에서 분당서 제출 버튼(는 새로 고쳐지는 상태 페이지에 표시되는).예를 들어,누군가가 버튼을 클릭 12:00:00,그들이 할 수 없을 다시 클릭할 때까지 12:01:00.

후 버튼을 클릭하면,나는 아마도 비활성화 버튼을 다시 설정한 후 한 분이 전달되는 내가 선호하는 솔루션입니다.

대단히 감사합니다.

도움이 되었습니까?

해결책

wtf...사람들은 jQuery 중독되어 있습니다.

<input id="btn" type="button" value="click me" onclick="doSomething();"/>

<script>
function doSomething() {
  document.getElementById("btn").disabled=true;
  setTimeout('document.getElementById("btn").disabled=false;',60000);
  // do your heavy stuff here
}
</script>

다른 팁

단지 제안,그러나 만약 당신이 갈 문제를 통해 코드를 작성 평가-제한하 제출 버튼을 사용하여 클라이언트 측 타이머(setTimeout),왜 그냥 제거 업데이트 버튼을 모두 함께 만들고,페이지를 자동 업데이트에 미리 정의 간격?

여기에 몇 가지 예제 코드에서 jQuery(이후 jQuery 제공하는 몇 가지 훌륭한 크로스 브라우저 AJAX 지원)

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <scrypt type="text/javascript">
    $(function(){
        // On page load...
        updateStatus();
    })

    function updateStatus(){
        $('#status').load('/url/to/status/display.php');
        setTimeout(updateStatus, 60000) // 60,000 miliseconds = 1 minute
    }
    </script>
</head>
<body>

    <div id="status">
        <!-- whatever is in /url/to/status/display.php will be loaded here -->
    </div>

</body>
</html>

이를 위해 순수한 자바 스크립트,당신은 단순히 캡처를 클릭하 이벤트를 비활성화 버튼을 사용 후에 다시 다시 timeout,아래 코드를 사용하 jQuery 및 가정 버튼 id'버튼을'(<button id="button">클릭!</button> 는 경우에는 입력:<input type="button" id="button">클릭!</input>)

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'></script>
<script type='text/javascript'>
$('#button').click( function(){
    $(this).attr('disabled', 'disabled');
    setTimeout(enableButton, 1000);
    return true; //make sure default click event happens
});

var enableButton = function(){
    $('#button').removeAttr('disabled');
}
</script>

당신은 말을 진행은 매우 무겁고,심지어 하지만 사람들은 버튼을 누르면 한 번 더 다음 분(면서 자바스크립트가 활성화되는)그들은 여전히 자바스크립트의 사용을 중지하고 버튼을 누릅니다 그들이 원하는 만큼,또는 전화로 url 을 직접적으로 많은 시간 그들이 같은 느낌.

편집 추가 전체 HTML 하는 스크립트

사용 setTimeout.

용 underscore.js 이만큼 쉽:

var func = _.debounce(function(x) {return x * x}, 60000);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top