//Create Account - Register Button
$('#registerCreateAccount').on('click', function() {
var uid = $('#registerUsername').val();
var email = $('#registerEmail').val();
var age = $('#registerAge').val();
var pwd = $('#registerPassword').val();
var confirmPwd = $('#registerConfirmPassword').val();
$.post('./php/register/createAccount.php', {uid: uid, email: email, age: age, pwd: pwd, confirmPwd: confirmPwd}, function(data) {
if (errTime) {
clearTimeout(errTime);
}
$('.errorMsg').html('<span class="w3-display-middle">' + data + '</span>');
var errTime = setTimeout(function() {
$('.errorMsg').html('');
}, 5000);
});
});
기본적으로 내가하는 일은 데이터를 PHP 파일로 보내고 콜백이있는 경우 오류 메시지입니다. 그래서 .errMsg div의 html을 변경합니다. 이전에는 보이지 않았지만, 내용이 없기 때문입니다. 오류 메시지가 5 초 동안 만 있기를 원하기 때문에 setTimeout을 사용하여 5 초 후에 내용을 지우기로 결정했습니다.clearTimeout이 제대로 작동하지 않습니다.
문제는 사람들이 등록 버튼을 여러 번 클릭 할 때 setTimeout이 계속 진행된다는 것입니다. 그렇기 때문에 버튼을 눌렀을 때 첫 번째 타임 아웃을 지우겠다고 결정했는데 어떤 이유로 그것이 작동하지 않습니다.
나는 거의 한 시간 동안 이것을보고 있었고 나는 버그를 찾지 못했지만, 나를 도와 주신 분들께 감사드립니다!
모두 여러분, 정말 빨리 도와 주셔서 감사합니다!
상위 범위에서'errTime'을 정의해야합니다. –
포스트 콜백에'errTime' 변수를 정의하십시오. 그래서 함수가 호출 될 때마다 새로운'errTime' 변수가 생성됩니다. click 이벤트가 발생하면 'errTime' 변수를 정의 해보십시오. 이 방법으로 모든 클릭 핸들러는 같은'errTime'에 접근 할 것입니다. – Bellian